Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi CreateMutex, komischer Fehler (https://www.delphipraxis.net/25776-createmutex-komischer-fehler.html)

Koma-Code 12. Jul 2004 12:07


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?

Sharky 12. Jul 2004 12:10

Re: CreateMutex, komischer Fehler
 
Hai Koma-Code,

zeige mal wie Du den Mutex erzeugst.

Koma-Code 12. Jul 2004 12:14

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);

Sharky 12. Jul 2004 12:18

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);

Koma-Code 12. Jul 2004 12:31

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

sakura 12. Jul 2004 12:36

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:...

Koma-Code 12. Jul 2004 12:38

Re: CreateMutex, komischer Fehler
 
:lol: Bei Name stand aber schon Application.Name

sakura 12. Jul 2004 12:39

Re: CreateMutex, komischer Fehler
 
Zitat:

Zitat von Koma-Code
:lol: Bei Name stand aber schon Application.Name

Gut, wenn der dann z.B. "Delphi-PRAXiS User Anwendung zum Durchsuchen von HDDs" ist, aber wenn der einfach nur "Windows Explorer" heißt... :mrgreen:

...:cat:...

Sharky 12. Jul 2004 12:41

Re: CreateMutex, komischer Fehler
 
Zitat:

Zitat von Koma-Code
:lol: Bei Name stand aber schon Application.Name

Hmmm. Und dieser ist ein Leerstring wenn Du ihn nicht vorher setzt.

Koma-Code 12. Jul 2004 12:44

Re: CreateMutex, komischer Fehler
 
Habe ich gemacht

Delphi-Quellcode:
 Application.Title := 'Koma-Mail';
 Application.CreateForm(TForm1, Form1);
Es lief ja wie gesagt auch auf den anderen PCs.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:02 Uhr.
Seite 1 von 2  1 2      

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