![]() |
CreateMutex, komischer Fehler
Hi,
ich verwende CreateMutex, damit das Programm nicht mehrmals gestartet wird. Das komische ist aber, das Delphi einen Mutex auf dem Programmnamen (sag man das so?) reserviert. Mein Programm lädt daraufhin immer Delphi in den Vordergrund. Wenn mein Progrann läuft, läßt sich Delphi wiederrum nicht starten ('Programm is already running.') :corky: Kennt jemand diesen Fehler? |
Re: CreateMutex, komischer Fehler
Hai Koma-Code,
zeige mal wie Du den Mutex erzeugst. |
Re: CreateMutex, komischer Fehler
Hier:
Delphi-Quellcode:
initialization
mHandle := CreateMutex(nil,True,'Name'); if (GetLastError = ERROR_ALREADY_EXISTS) then begin ... end else ShowMessage ('Program is already running.'); halt; end; finalization if mHandle <> 0 then CloseHandle(mHandle); |
Re: CreateMutex, komischer Fehler
Hmmm.... ich verwende bei meinen Programmen als "Name" immer eine GUID (Im Editor von Delphi Shift-Ctrl-G).
Der sollte dann "auf jeden Fall" eindeutig sein. Ausserdem prüfst Du falsch. Du sagst wenn der Mutex nicht existiert soll das Programm beendet werden.
Delphi-Quellcode:
initialization
mHandle := CreateMutex(nil,True,'{4A1ADBC4-25EA-42AF-8A30-35F5A4606554}'); if (GetLastError = ERROR_ALREADY_EXISTS) then begin ShowMessage ('Program is already running.'); halt; end else begin end; end; finalization if mHandle <> 0 then CloseHandle(mHandle); |
Re: CreateMutex, komischer Fehler
Oh,
als ich den Code abgekürzt habe, ist es an die falsche stelle gerutscht. Es funktioniert auch auf meinem anderem PC, nur auf dem neuen nicht. Aber mit der GUID klappt es :) Danke |
Re: CreateMutex, komischer Fehler
Dann bedenke mal, daß Name auch nicht unbedingt so einmalig ist ;) Wird mal wohl oft in Code-Schnippseln sehen und Programmierer sind oft zu faul die kompletten Anweisungen zu lesen :zwinker:
...:cat:... |
Re: CreateMutex, komischer Fehler
:lol: Bei Name stand aber schon Application.Name
|
Re: CreateMutex, komischer Fehler
Zitat:
...:cat:... |
Re: CreateMutex, komischer Fehler
Zitat:
|
Re: CreateMutex, komischer Fehler
Habe ich gemacht
Delphi-Quellcode:
Es lief ja wie gesagt auch auf den anderen PCs.
Application.Title := 'Koma-Mail';
Application.CreateForm(TForm1, Form1); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:25 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