![]() |
Mehrere Instanzen verhindern
Habe folgendes in meiner Unit1 zu stehen:
Delphi-Quellcode:
Hierbei wird verhindert, dass ein Programm namens Festung.exe doppelt ausgeführt wird. Was muss ich jetzt machen, damit die Prozedur auch überprüft , ob eine client.exe schon läuft? Denn in diesem Falle soll der gleiche Effekt auftreten, wie wenn Festung.exe schon ausgeführt wurde.
Initialization //Verhindern, dass das Programm mehrmals gestartet wird
mHandle := CreateMutex(nil, True, 'Festung.exe'); if GetLastError = ERROR_ALREADY_EXISTS then begin ShowMessage('Programm wird bereits ausgeführt'); Halt; end; finalization if mHandle <> 0 then CloseHandle(mHandle); |
Re: Mehrere Instanzen verhindern
In dem du auch eien Muztex für die client.exe erstellst? :roll:
|
Re: Mehrere Instanzen verhindern
Ich glaub du verwechselst da was. Der dritte Parameter von CreateMutex gibt einfach einen String an, der den Mutex identifiziert. In diesem Fall hast du "Festung.exe" verwendet, was wohl der Name der Anwendung ist, du könntest aber auch jeden anderen Bezeichner verwenden. Name des Mutex und Name der Anwendung können natürlich übereinstimmen, müssen es aber nicht.
|
Re: Mehrere Instanzen verhindern
Zitat:
Delphi-Quellcode:
Das bringt bei mir aber garnichts. Der startet trotzdem fröhlich, obwohl client.exe läuft.
Initialization //Verhindern, dass das Programm mehrmals gestartet wird
mHandle := CreateMutex(nil, True, 'Festung.exe'); if GetLastError = ERROR_ALREADY_EXISTS then begin ShowMessage('Programm wird bereits ausgeführt'); Halt; end; mHandle := CreateMutex(nil, True, 'client.exe'); if GetLastError = ERROR_ALREADY_EXISTS then begin ShowMessage('client.exe läuft bereits'); Halt; end; finalization if mHandle <> 0 then CloseHandle(mHandle); |
Re: Mehrere Instanzen verhindern
Moin Rapthor,
lies Dir doch noch mal Chewies Beitrag durch. Verallgemeinert: Das Programm, dass nur einmal gestartet werden soll muss prüfen, ob es schon läuft. In einem anderen Programm kann man dann natürlich auch testen, ob das der Fall ist. Ob das Sinn macht hängt natürlich vom Zusammenhang ab. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:30 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