View Full Version : سوال: تشخيص باز بودن يك برنامه!!
  
Little Robot
یک شنبه 02 فروردین 1388, 14:02 عصر
سلام :لبخند:
چه جوري بفهميم يه برنامه تو قسمت پروسس تسك منجر هست يا نه؟؟! يعني بفهميم در حال اجراست؟!
البته با FindWindow نميشه چون هايده!
:متفکر:
mithridates
یک شنبه 02 فروردین 1388, 15:38 عصر
Process32First, Process32Next
MSHService
یک شنبه 02 فروردین 1388, 17: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, 07: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, 09: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, 12:01 عصر
من اين دستوري را که شما فرموده ايد را نوشتم اما هميشه مي گويد برنامه اجرا نيست مي شود من را راهنمايي کنيد؟
اون کد فقط زمانی جواب میده که برنامه مورد نظر همواره یک Mutex با نام در زمان اجرایش ایجاد کنه، تا شما بتونید از اون طریق به وجودش پی ببرید. در واقع کد مربوطه بدرد چک کردن اینکه آیا بیش از یک نسخه از برنامه شما در حال اجرا هست، میخوره. برای بررسی در حال اجرا بودن یک Process دلخواه، اون کد کار خاصی انجام نمیده و باید وجود Process را با استفاده از PsAPI یا Tool Help API (پست شماره 2) بررسی کرد.
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.