Einzelnen Beitrag anzeigen

Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#3

AW: Prüfen mittels PID ob Prozess läuft

  Alt 28. Mai 2012, 21:37
Du überprüfst nicht, ob ein Prozess mit der PID läuft, sondern prüfst ob diese Null ist. Wenn du sie auf einen bestimmten Wert setzt, ist sie das natürlich nie.

Außerdem sind ein Handle und eine PID auch unterschiedliche Sachen.

In dem verlinktem Beitrag ist folgender Teil interessant:
Delphi-Quellcode:
function GetProcessID(Exename: string): DWORD;
var
  hProcSnap: THandle;
  pe32: TProcessEntry32;
begin
  result := 0;
  hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
  if hProcSnap <> INVALID_HANDLE_VALUE then
  begin
    pe32.dwSize := SizeOf(ProcessEntry32);
    if Process32First(hProcSnap, pe32) = true then
    begin
      while Process32Next(hProcSnap, pe32) = true do // gehe durch alle Prozesse
      begin
        if pos(Exename, pe32.szExeFile) <> 0 then
          result := pe32.th32ProcessID; // die Prozess ID wird zurückgegeben
      end;
    end;
    CloseHandle(hProcSnap);
  end;
end;
PS: @Luckie:
Wäre es so rum nicht richtiger:
Delphi-Quellcode:
 if Process32First(hProcSnap, pe32) then
    begin
      repeat // gehe durch alle Prozesse
        if pos(Exename, pe32.szExeFile) <> 0 then
          result := pe32.th32ProcessID; // die Prozess ID wird zurückgegeben
      until Process32Next(hProcSnap, pe32);
    end;
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.

Geändert von BUG (28. Mai 2012 um 21:47 Uhr)
  Mit Zitat antworten Zitat