PDA

View Full Version : سوال: تشخيص باز بودن يك برنامه!!



Little Robot
یک شنبه 02 فروردین 1388, 13:02 عصر
سلام :لبخند:
چه جوري بفهميم يه برنامه تو قسمت پروسس تسك منجر هست يا نه؟؟! يعني بفهميم در حال اجراست؟!
البته با FindWindow نميشه چون هايده!
:متفکر:

mithridates
یک شنبه 02 فروردین 1388, 14:38 عصر
Process32First, Process32Next

MSHService
یک شنبه 02 فروردین 1388, 16:17 عصر
سلام
کد زیر لیست پروسز های فعال رو به شما بر میگردونه(البته اگر پروسز ویروسی نباشه که درایور یا Dll ش رو نصب کرده باشه!!)



Function ListOfProcess:TstringList;
var
Proc : TProcessEntry32;
Snap : THandle;
Kelime : String;
Begin
Result:=TStringList.Create;
Snap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS,0);
Proc.dwSize := SizeOf(TProcessEntry32);
Process32First(Snap,Proc);
Repeat
Kelime:=String(Proc.szExeFile);
Result.Add(Kelime);
Until (not Process32Next(Snap,Proc));
end;

موفق و پیروز باشید.

SYNDROME
دوشنبه 03 فروردین 1388, 06:30 صبح
Var
HMutex : THandle;
begin
HMutex := CreateMutex(Nil,False,'ProgramName');
IF WaitForSingleObject(HMutex,0) = WAIT_TIMEOUT Then
Begin
End;

'ProgramName' : به طور مثال Project1.exe
موفق باشید

h_mohamadi
چهارشنبه 05 فروردین 1388, 08:53 صبح
سلام SYNDROME (http://barnamenevis.org/forum/member.php?u=35868)
من اين دستوري را که شما فرموده ايد را نوشتم اما هميشه مي گويد برنامه اجرا نيست مي شود من را راهنمايي کنيد؟
دستور من:

procedure TForm1.Button1Click(Sender: TObject);
Var
HMutex : THandle;
begin
HMutex := CreateMutex(Nil,False,'Test.exe');
IF WaitForSingleObject(HMutex,0)=WAIT_TIMEOUT Then
Begin
ShowMessage('برنامه باز است');
End
else ShowMessage('برنامه بسته است');
end;

vcldeveloper
چهارشنبه 05 فروردین 1388, 11:01 صبح
من اين دستوري را که شما فرموده ايد را نوشتم اما هميشه مي گويد برنامه اجرا نيست مي شود من را راهنمايي کنيد؟
اون کد فقط زمانی جواب میده که برنامه مورد نظر همواره یک Mutex با نام در زمان اجرایش ایجاد کنه، تا شما بتونید از اون طریق به وجودش پی ببرید. در واقع کد مربوطه بدرد چک کردن اینکه آیا بیش از یک نسخه از برنامه شما در حال اجرا هست، میخوره. برای بررسی در حال اجرا بودن یک Process دلخواه، اون کد کار خاصی انجام نمیده و باید وجود Process را با استفاده از PsAPI یا Tool Help API (پست شماره 2) بررسی کرد.