Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: CreateMutex() verhält sich komisch

  Alt 23. Apr 2020, 16:10
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: MSDN-Library durchsuchenCreateMutex
"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.
$2B or not $2B

Geändert von himitsu (23. Apr 2020 um 16:15 Uhr)
  Mit Zitat antworten Zitat