PDA

View Full Version : سوال: اجرای مخفی یک برنامه



Mask
یک شنبه 03 اردیبهشت 1391, 14:57 عصر
با سلام.
برنامه calc.exe رو در نظر بگیرید.
چطوری باید اجراش کنم که فرمش قابل مشاهده نباشه.
از دستور زیر هم استفاده کردم اما بازم فرمش قابل نمایشه.

ShellExecute(Handle,NIL,PChar('calc.exe'),nil,nil, SW_HIDE);

بهروز عباسی
یک شنبه 03 اردیبهشت 1391, 17:02 عصر
با این تابع فکر نکنم بشه

باید بعد از اجرای برنامه هندل پنجرشو بدست بیاری بعد اونو مخفی کنی.

Mask
یک شنبه 03 اردیبهشت 1391, 17:17 عصر
با این تابع فکر نکنم بشه

باید بعد از اجرای برنامه هندل پنجرشو بدست بیاری بعد اونو مخفی کنی.

نه. حتی برای یک میلی ثانیه هم نمیخام باز شدن برنامه رو کاربر ببینه. که متاسفانه اگه اینجوری بشه میبینه.
حتی با CreateProcess هم نشد.

function StartProcess(ExeName: string; CmdLineArgs: string = '';
ShowWindow: boolean = True; WaitForFinish: boolean = False): integer;
var
StartInfo: TStartupInfo;
ProcInfo: TProcessInformation;
begin
//Simple wrapper for the CreateProcess command
//returns the process id of the started process.
FillChar(StartInfo,SizeOf(TStartupInfo),#0);
FillChar(ProcInfo,SizeOf(TProcessInformation),#0);
StartInfo.cb := SizeOf(TStartupInfo);

if not(ShowWindow) then begin
StartInfo.dwFlags := STARTF_USESHOWWINDOW;
StartInfo.wShowWindow := SW_HIDE;
end;

CreateProcess(nil,PChar(ExeName + ' ' + CmdLineArgs),nil,nil,False,
CREATE_NEW_PROCESS_GROUP + NORMAL_PRIORITY_CLASS,nil,nil,StartInfo,
ProcInfo);

Result := ProcInfo.dwProcessId;

if WaitForFinish then begin
WaitForSingleObject(ProcInfo.hProcess,Infinite);
end;

//close process & thread handles
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
end;

بهروز عباسی
یک شنبه 03 اردیبهشت 1391, 17:34 عصر
من یه برنامه دیدم که برنامه های دیگه (مثل Calc) رو درون خودش باز میکرد
اما فکر کنم اگه برنامه ی اجرا کننده رو مخفی کنیم بعد calc رو اجرا کنیم نمایش داده نشه

Mask
یک شنبه 03 اردیبهشت 1391, 17:41 عصر
اما فکر کنم اگه برنامه ی اجرا کننده رو مخفی کنیم بعد calc رو اجرا کنیم نمایش داده نشه
اون نمونه برنامه رو دارم.
اون کاره خواصی نمیکنه. فقط پرنت اپلیکیشن رو تغییر میده و فرم برنامه رو پرنت مثلا calc.exe میکنه.