![]() |
Prüfen ob ein Programm schon gestartet ist!
Hallo zusammen,
ich hab folgendes Problem: Ich habe ein kleines Programm geschrieben das auf eine Text - Datei zugreift um dort Daten auszulesen! Das Programm hat die Text - Datei so lange in Benutzung wie es läuft! Jetzt wenn ich per Terminaldienstclient auf den Server gehe öffnet er eine neue Session, mein Programm ist im Autostart drin somit wird es mitgestartet und prozudiert gleich einen Fehler weil die Datei in Use ist! Wie kann ich jetzt prüfen ob die Datei schon in der andren Session gestartet wurde? Kann man irgendwie die Prozesse auslesen und damit en Vergleich starten? Schon ma Thänkx im Vorraus PlanetofBlade :coder: |
Mit welcher Funktion öffnest du die Datei?
|
Hallo PlanetofBlade
vielleicht hilft dir das weiter ![]() |
vielen dank lodda, ich probier das ma damit! Kein Plan ob das mit der 2ten Session auch so funktioniert!
@janjan: ich öffne die Datei mit der Inifile Syntax = TInifile.Create('asd.cfg') |
Öhm, wenn ich dich richtig verstehe führt das hier zu einer Fehlermeldung bei dir:
Delphi-Quellcode:
Bei mir können mehrere TInifiles innerhalb eines Programms ohne Fehler auf die selbe Datei zugreifen, auch mit 2 verschiedenen Programmen die gleichzitig auf die selbe Datei zugreifen klappts...
ini1:=TIniFile.Create(ExtractFilePath(paramstr(0))+'test.ini');
ini2:=TIniFile.Create(ExtractFilePath(paramstr(0))+'test.ini'); ini1.WriteString('1','2','3'); ini2.WriteString('1','2','4'); |
Packe die folgenden Zeilen in die .dpr-Datei, damit kannst Du einen zweiten Programmstart abfangen. Ein Mutex gilt systemweit und läßt sich nur einmal erzeugen. Beim zweiten Versuch gibt es einen Fehler (ERROR_ALREADY_EXISTS), damit weißt Du, das das Programm schon läuft. Die Konstante sMyMutex ist beliebig, sollte aber schon einigermaßen einmalig im System sein.
programm ... const sMyMutex = 'BlaBlaBla'; function AlreadyStarted: Boolean; begin CreateMutex(nil, False, sMyMutex); Result := GetLastError = ERROR_ALREADY_EXISTS; end; begin if AlreadyStarted then begin Exit; end; ... end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz