Moin Zusammen,
also bei mir sähe die Funktion so aus:
Delphi-Quellcode:
function IsRunning(const AsExePath : string): boolean;
var
fsWork : TFileStream;
begin
Result := false;
try
fsWork := TFileStream.Create(AsExePath,fmOpenRead or fmShareExclusive);
FreeAndNil(fsWork);
except
Result := true;
end;
end;
Als AsExePath ist hier, logisch, der Pfad zur Datei anzugeben.
Funktionsprinzip:
Man versucht einen Filestream für exklusiven Zugriff zu öffnen.
Dies geht schief, wenn das Programm läuft, da die Datei dann vom System gelockt ist, und nicht exklusiv geöffnet werden kann.
Klappt es, wird der Filestream wieder freigegeben, und false zurückgeliefert.
Eine andere Variante wäre es, zu versuchen die Datei zum Schreiben zu öffnen. Das sollte ebenso auf eine
Exception auflaufen, wenn das Programm läuft.
Das ist die Umkehrung einer MiniKompo, die ich hier in schon mal in einem Thread (
Datei für Schreibzugriffe sperren?) gepostet hatte.
Leider kann ich die beiden Varianten zur Zeit nicht ausprobieren, aber es sollte funktionieren.