Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Prüfen ob ein Programm schon gestartet ist! (https://www.delphipraxis.net/3154-pruefen-ob-ein-programm-schon-gestartet-ist.html)

PlanetofBlade 26. Feb 2003 09:37


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:

janjan 26. Feb 2003 09:48

Mit welcher Funktion öffnest du die Datei?

lodda 26. Feb 2003 09:58

Hallo PlanetofBlade

vielleicht hilft dir das weiter
http://www.delphipraxis.net/viewtopic.php?t=1457

PlanetofBlade 26. Feb 2003 10:04

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')

janjan 26. Feb 2003 10:31

Öhm, wenn ich dich richtig verstehe führt das hier zu einer Fehlermeldung bei dir:

Delphi-Quellcode:
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');
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...

Delphianer 26. Feb 2003 13:39

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 23:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz