Hallo
Ich möchte prüfen ob ein bestimmter prozess gerade läuft
dazu hab ich diesen Code gefunden
Delphi-Quellcode:
uses
tlhelp32, ShellAPI;
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
begin
if pos(Exename, pe32.szExeFile) <> 0 then
result := pe32.th32ProcessID;
end;
end;
CloseHandle(hProcSnap);
end;
end;
function GetProcessHandleFromID(ID: DWORD): THandle;
begin
result := OpenProcess(SYNCHRONIZE, False, ID);
CloseHandle(result);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
hProcess: THandle;
wf: DWORD;
begin
bClose := False;
Button1.Enabled := False;
while bClose = False do
begin
hProcess := GetProcessHandleFromID(GetProcessID('notepad.exe'));
if hProcess = 0 then
Label1.Caption := 'Notepad läuft nicht'
else
Label1.Caption := 'Notepad läuft';
Application.HandleMessage;
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
bClose := True;
end;
Er funktioniert leider nicht...
Ich habe mal den Wert von hProcess angeschaut und der war meistens so ziwschen 1000 und 2000 egal ob der Prozess
läuft oder nicht.
Ich hoffe jemand hat dazu ne idee...