Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.106 Beiträge
 
Delphi 11 Alexandria
 
#7
  Alt 5. Dez 2002, 18:11
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat