ورود

نسخه کامل مشاهده نسخه کامل : اجرای برنامه از Run



MAR_Programmer
26-05-2008, 08:28
می خواستم ببینم راهی وجود داره که برنامه از طریق Run اجرای بشه.
توجه کنید که می دونم که به مسیر دادن میشه این کار رو کرد مثلا توی Run تایپ کنیم

C:\Project1.exe
منظور من مورد فوق نیست بلکه مثلا اگر شما توی Run تایپ کنید msconfig یه برنامه اجرای میشه یا مثلا ping یا خیلی از دستورات دیگه در ضمن من می خوام که به برنامه پارامتر هم بفرستم اما نکته اینجاست که اگر برنامه یک بار اجرا بشه مجدد اجرای نمی شه ( به صورت توکار خود برنامه از اجرای مجدد خودش جلوگیری می کنه) حالا اگر ما به برنامه پارامتر جدید بفرستیم و اونو اجرا کنیم چه طوری این پارامتر ها رو به برنامه قبلی انتقال بدیم
از توجهتون ممنون

NoneForce
26-05-2008, 08:51
سلام

يكم واضح تر توضيح بدهيد، دقيقا مي خواهيد چه كاري انجام بدهيد؟

MAR_Programmer
26-05-2008, 09:00
ببینید این یه برنامه مخفیه یعنی فرم اون Hide و کاربر تنها در صورتی که داخل CMD یا Run پیام مورد نظر برنامه - پارامتر های مورد نظر - رو باید وارد کنه تا برنامه فرم مورد نظر رو نشون بده مشکل من اینه که به هیچ وسیله ای نمی تونم کلید های فشار داده شده توی Desktop رو پیدا کنم
نمی دونم توضیحم کافی بود یا نه؟

NoneForce
26-05-2008, 09:13
سلام
براي hook كردن كيبرد و فهميدن كليدهاي فشرده شده مي توانيد از TCPKeyHook استفاده كنيد.
شما ميخواهيد اون برنامه مخفي را فعال كنيد؟ برنامه مخفي را هم خودتان نوشتيد؟

Bracket
26-05-2008, 09:24
ولی من فکر کنم برنامتون رو باید جزو سرویس های ویندوز اضافه کنید البته فقط فکر میکنم و تا حالا همچین برنامه ای نساختم ولی برنامه هایی که تو سرویس های ویندوز باشه این خاصیت رو هم داره که وقتی ویندوز بوت بشه برنامه هم اتوماتیک ران میشه همیشه حتی اگه داخل ویندوز لاگین هم نکنید . من نساختم همچین برنامه ای ولی میدونم NetFramework. همچین امکانی رو میده کار سختی هم نباید باشه ولی تو دلفی نمیدونم .

MAR_Programmer
26-05-2008, 11:04
اول اینکه میتونم برنامه رو جزو سرویس ها قرار بدم اما نحوه اجرای اون برای من مهمه یعنی اینکه می خوام تنها با وارد کردن اسم برنامه یا یه کلمه ای توی Run یا CMD برنامه در پشت صفحه اجرا بشه - به همراه در یافت پارامتر که مثلا بعد از اجرا فرم اصلی برنامه نمایش داده بشه مثلا توی Run اگر بنویسیم
Ping 192.0.0.1 -t
به ادرس مورد نظر به تعداد بی نهایت بسته ارسال می کنه منظورم من هم اینه مثلا اسم برنامه رو در نظر بگیرید Project می خوام برای نمایش فرم اصلی پارامتر sh فرستاده بشه حالا با دستور زیر هم برنامه اجرا بشه هم فرم اون نمایش داده بشه
Run:Project sh
و اگر تنها نام برنامه آورده شد فقط اجرا بشه و فرم اصلی رو نمایش نده
نمی دونم متوجه منظور من شدید یا نه؟؟؟؟

MAR_Programmer
26-05-2008, 11:10
سلام
براي hook كردن كيبرد و فهميدن كليدهاي فشرده شده مي توانيد از TCPKeyHook استفاده كنيد.
شما ميخواهيد اون برنامه مخفي را فعال كنيد؟ برنامه مخفي را هم خودتان نوشتيد؟

می بخشید یه چند دقیقه ای اینترنت قطع شد اصلا جواب های بالا رو ندیدم
بله برنامه رو خودم نوشتم و فرم اصلی اون هم موقع اجرا به صورت Hide البته من توی IconTry سیستم یه Icon گذاشتم که فرم اصلی رو از اونجا اجرا می کنه اما من می خوام که این Icon رو هم بردارم و فقط با دستور برنامه خودشو نشون بده
توضیح بیشتر اینکه مثلا فرض کنید که این برنامه یه برنامه کنترلی برای یه کافی نته که می خوام کاملا مخفی باشه و جلوی کاربرو برای اجرای برخی برنامه ها بگیره تا اینجا خیلی مشکل نداشتم اما قسمت مخفی کردن رو نمی تونم منظورم اینکه مثلا فرض کنید می خوام تنظیمات برنامه رو برای یه سیستم عوض کنم می خوام با دادن دستور توی Run یا هرجای دیگه که توی ویندوز عمومی و موجب جلب توجه نمی شه - IconTry سیستم رو هر کسی می تونه ببینه - دستور خودم رو بدم برنامه صفحه اصلی خودشو نشون بده و ...
اصلا میشه یه همچین کاری کرد ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟
شما گفتید Hook من این کارو انجام می دهم - یعنی دادم - اما آنتی ویروسم برنامه رو به عنوان Keyloger شناسایی میکنه و جلوی فعالیت اونو میگیره - آنتی ویروسم Kaspersky - حالا یه راه حل ساده تر ندارید؟؟؟؟؟؟؟

NoneForce
26-05-2008, 11:24
سلام

ببينيد اين همون چيزي است كه ميخواهيد :
(اين كد برنامه را فقط از TaskBar حذف مي كند، بقيه كارها را بايد خودتان انجام دهيد)


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

MAR_Programmer
26-05-2008, 11:46
سلام

ببينيد اين همون چيزي است كه ميخواهيد :
(اين كد برنامه را فقط از TaskBar حذف مي كند، بقيه كارها را بايد خودتان انجام دهيد)


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اینو که می دونستم :13::13::13:
برای مخفی کردن این کار و قبلا انجام دادم مشکل من همونی که گفتم می خوام برنامه از Run یا هرجای دیگه ای یه دستور بگیره - پارامتر ورودی - بعد بر اساس اون یه کاری انجام بده حتی اگر فرم اصلی هم نمایش داده نشه - در پشت صحنه کار کنه -
الان به کد یکم دقت کردم توی بخش اول که گفتید در نظر بگیرید که برنامه در حال اجراست و در صورت اجرای مجدد جلوی ادامه کار گرفته میشه - در هر لحظه تنها یک نسخه از برنامه می تونه اجرا بشه با استفاده از Mutex اگر املاشو درست نوشته باشم - حالا سر این پارامتر می خوام یه بلایی بیارم یعنی اگر برنامه قبلا اجرا شده بود این پارامتر رو به اون برنامه بفرستم و ...
بازم ممنون که جواب دادید :46::46::46::46::46:

MAR_Programmer
28-05-2008, 04:18
یعنی این سوال اینقدر مشکل بود - البته بود خودم قبول دارم
اما یه حرفه ای، یه با تجربه پیدا نمی شه جواب بده
آی "ایهن ناس" به فریاد برسید
:46::46::46::46::46::46::46::46::46:

YBB
29-05-2008, 01:06
یه روش به صورت زیر است:

یک پیام اختصاصی ایجاد کرده در این صورت در هنگام اجرای برنامه تان چهار حالت وجود خواهد داشت:
1- برنامه تان برای اولین بار اجرا شده است بدون پارامتر ورودی که در این صورت نیازی به کاری نیست.
2- برنامه تان برای اولین بار اجرا شده است ولی با پارامتر ورودی ای مانند show که در این حالت یک پیام به خود برنامه( ...SendMessage(TMainForm.Handle) ارسال شده و کار مورد نظر شما در روال پاسخ گویی به رویداد پیام می بایست آورده شود.
3- برنامه تان قبلا اجرا شده و دوباره برنامه را بدون پارامتر ورودی اجرا شده که در این صورت فقط برنامه دوم می بایست Terminate شود.
4- برنامه تان قبلا اجرا شده و دوباره برنامه را با پارامتر ورودی اجرا شده که در این صورت ابتدا یک پیام ارسال شده و سپس بلافاصله برنامه دوم که برنامه جاری باشد Terminate کرده و پیام به نسخه اول برنامه که در حافظه است تحویل خواهد شد که در این حالت دقیقا مانند حالت 2 به رویداد پیام پاسخ گویی می شود.


const
MY_MESSAGE = WM_USER + 4242;

type
TMainForm = class(TForm)
procedure MessageReceiver(var msg: TMessage); message MY_MESSAGE;



procedure TMainForm.FormCreate(Sender: TObject);
begin
if ParamStr(1)='show' then
begin
SendMessage(TMainForm.Handle, MY_MESSAGE, 0, DWORD(PChar('show')));
if ProgramIsRunning then Application.Terminate;
end;
end;
end;

procedure TMainForm.MessageReceiver(var msg: TMessage);
var
txt: PChar;
begin
txt := PChar(msg.lParam);
msg.Result := 1;
if txt='show' then
DoAnyThingThatYouWant;
end;

MAR_Programmer
01-06-2008, 01:46
یه روش به صورت زیر است:

یک پیام اختصاصی ایجاد کرده در این صورت در هنگام اجرای برنامه تان چهار حالت وجود خواهد داشت:
1- برنامه تان برای اولین بار اجرا شده است بدون پارامتر ورودی که در این صورت نیازی به کاری نیست.
2- برنامه تان برای اولین بار اجرا شده است ولی با پارامتر ورودی ای مانند show که در این حالت یک پیام به خود برنامه( ...SendMessage(TMainForm.Handle) ارسال شده و کار مورد نظر شما در روال پاسخ گویی به رویداد پیام می بایست آورده شود.
3- برنامه تان قبلا اجرا شده و دوباره برنامه را بدون پارامتر ورودی اجرا شده که در این صورت فقط برنامه دوم می بایست Terminate شود.
4- برنامه تان قبلا اجرا شده و دوباره برنامه را با پارامتر ورودی اجرا شده که در این صورت ابتدا یک پیام ارسال شده و سپس بلافاصله برنامه دوم که برنامه جاری باشد Terminate کرده و پیام به نسخه اول برنامه که در حافظه است تحویل خواهد شد که در این حالت دقیقا مانند حالت 2 به رویداد پیام پاسخ گویی می شود.


const
MY_MESSAGE = WM_USER + 4242;

type
TMainForm = class(TForm)
procedure MessageReceiver(var msg: TMessage); message MY_MESSAGE;



procedure TMainForm.FormCreate(Sender: TObject);
begin
if ParamStr(1)='show' then
begin
SendMessage(TMainForm.Handle, MY_MESSAGE, 0, DWORD(PChar('show')));
if ProgramIsRunning then Application.Terminate;
end;
end;
end;

procedure TMainForm.MessageReceiver(var msg: TMessage);
var
txt: PChar;
begin
txt := PChar(msg.lParam);
msg.Result := 1;
if txt='show' then
DoAnyThingThatYouWant;
end;

سلام بازم هم همون مشکل اجرا از یه جایی توی سیستم - مثلا Run - رو دارم اگر هم برنامه قرار باشه به کلید های فشرده شده حساس باشه - با کدی که من نوشتم - برنامه یه Keyloger به حساب میاد و آنتی ویروسم به اون گیر میده حالا چه کار کنم؟؟؟؟