Erstmal folgendes in die Uses Liste einbinden:
uses TlHelp32;
Das die Funktion wo überprüft , ob eine EXE datei läuft:
Delphi-Quellcode:
function IsExeRunning(const AExeName: string): boolean;
var
h: THandle;
p: TProcessEntry32;
begin
Result := False;
p.dwSize := SizeOf(p);
h := CreateToolHelp32Snapshot(TH32CS_SnapProcess, 0);
try
Process32First(h, p);
repeat
Result := AnsiUpperCase(AExeName) = AnsiUpperCase(p.szExeFile);
until Result or (not Process32Next(h, p));
finally
CloseHandle(h);
end;
end;
Zu guter Letzt der Beispielaufruf:
Delphi-Quellcode:
if IsExeRunning('Notepad.exe') then
ShowMessage('Notepad läuft')
else
ShowMessage('Notepad läuft nicht');
_____________________
DANN kannst du noch Prüfen , ob ein Window "läuft":
Delphi-Quellcode:
var
Handle: THandle;
begin
Handle := FindWindow(PChar('
Unbekannt - Editor'),
nil);
if Handle<>0
then
Showmessage('
Editor ist schon gestartet')
else
Showmessage('
Editor wurde noch nicht gestartet');
_____________________
1. Moeglichkeit
Läuft Delphi
IDE?
Delphi-Quellcode:
If FindWindow('TAppBuilder',nil) <= 0 then
ShowMessage('Delphi läuft nicht')
else
ShowMessage('Delphi läuft');
2. Moeglichkeit
Delphi-Quellcode:
if DebugHook <> 0
then
ShowMessage('
Inside IDE')
else
ShowMessage('
StandAlone');
___________________
Du kannst natürlich auch die laufendne Prozesse ermitteln und Delphi rauspicken:
Uses Liste einbinden:
Die Funktion:
Delphi-Quellcode:
procedure GetProcessList(const aProcessList: TStrings);
var
Snap: THandle;
ProcessE: TProcessEntry32;
begin
aProcessList.Clear;
Snap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
try
ProcessE.dwSize := SizeOf(ProcessE);
if Process32First(Snap, ProcessE) then
Repeat
aProcessList.Add(ProcessE.szExeFile);
Until not Process32Next(Snap, ProcessE)
else
RaiseLastOSError;
finally
CloseHandle(Snap);
end;
end;
Beispielaufruf:
GetProcessList(listbox1.Items);