jo, wollt ich auch grad sagen.
Delphi-Quellcode:
MutexHandle := CreateMutex(nil, True, 'Global\NameOfTheApp');
if MutexHandle <> 0 then
if GetLastError = ERROR_ALREADY_EXISTS then
ExistierteShon_BringToFrontAndExit
else
ExistierteNochNicht
else
RaiseLastOSError;
Siehe die Dokumentation:
CreateMutex
"Return value" und die "Remarks" können auch nie schaden.
Es kann sein, dass das Verhalten bei "ohne Global/Local" geändert wurde, oder was mit Benutzerrechten oder das was dort vonwegen "guidelines outlined for Terminal Services" gesagt wurde oder ...
Bei den meisten APIs ist es so, dass man GetLastError auch nur dann auswerten darf, wenn das Result "Fehler" sagt, also z.B. bei sowas wie 0 oder -1,
aber gut, hier gibt es noch den Senderfall, dass Result<>0 und GetLastError=ERROR_ALREADY_EXISTS ist.
Denn wenn es keine Fehler gab, dann muß LastError nicht auf 0 (ERROR_SUCCESS) gesetzt werden. In diesem Fall ist das der Fehler "irgendeiner"
WinAPI, die vorher aufgerufen wurde.