Mehrfachstart einer .exe verhindern
Hallo,
ich habe hier vor langer Zeit ein Thread gefunden, dass meine Frage schon beantwortet hat, leider finde ich es nicht mehr :-( Also: Ich möchte das meine exe nur einmal gestartet werden kann, wie realiziere ich das? Bzw. weiß Jemand welches Post das war, welches diese Frage schon beantwortet hat? Gruß, Ferby |
Re: Mehrfachstart einer .exe verhindern
|
Re: Mehrfachstart einer .exe verhindern
Den Link fand ich auch nimmer aber ich kopier mir immer interessante Sachen in Textdateien
das hatte hier mal Lemmy geschrieben Zitat:
Delphi-Quellcode:
program Project1;
uses Forms,Windows, Unit1 in 'Unit1.pas' {Form1}; //-->hier stehen deine Namen der Forms bzw. Units {$R *.RES} const MutexName = 'Mein Programm'; //-->quasi der Name, unter dem Windows dein Programm anspricht var hMutex: THandle; begin hMutex := CreateMutex(NIL, True, MutexName); //-->Versuch, dem Programm den obigen Mutex zuzuweisen if (hMutex = 0) OR (GetLastError = ERROR_ALREADY_EXISTS) then begin CloseHandle(hMutex); halt; end; //hat es nicht geklappt, dann wird das Programm //gar nicht erst initialisiert (also nicht gestartet) Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; CloseHandle(hMutex); end. |
Re: Mehrfachstart einer .exe verhindern
Hallo,
danke super |
Re: Mehrfachstart einer .exe verhindern
Die Mutex-Variante ist allerdings blöd, wenn ein Programm mal abstürzt und der Mutex dann nicht richtig gelöscht wird - dann lässts sich gar nicht mehr starten ;) Gerade beim Debuggen ist der Griff zu Ctrl+F2 ja manchmal verlockend, weil so schön abkürzend.
Ich hab hier in meinem Blog noch Alternativen genannt; wenn es um eine GUI-Anwendung geht und diese ein Hauptfenster hat, finde ich FindWindow auf die Fensterklasse (da muss man natürlich nen eindeutigeren Namen als TForm1 wählen) noch am praktischsten, weil es direkt das Handle gibt, das man für SetForegroundWindow verwenden kann (somit halt das zweite Starten das Original auch noch gleich in den Vordergrund). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:18 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