Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Mehrfaches ausführen von Konsolenanwendung verhindern /Mutex (https://www.delphipraxis.net/136822-mehrfaches-ausfuehren-von-konsolenanwendung-verhindern-mutex.html)

lockbox 8. Jul 2009 15:13


Mehrfaches ausführen von Konsolenanwendung verhindern /Mutex
 
Hallo DP,

Ich verwende seit einer Weile folgenden Code um mehrfaches ausführen meiner Programme zu verhindern.

Delphi-Quellcode:
Initialization
   mHandle := CreateMutex(nil, True, '979246B5-A7CA-7E5F-A01C-8034E778B70C');
     if GetLastError = ERROR_ALREADY_EXISTS then
     begin
       Halt;
end;
finalization
   if mHandle <> 0 then
     CloseHandle(mHandle);
end.
Jetzt möchte ich eines dieser Programme als Konsolenanwendung umsetzten. Und dieses sollte auch nicht mehrfach ausführbar sein.
Wie mach ich das nun am besten o.O initialization und finalization fallen ja weg :gruebel:

mjustin 8. Jul 2009 15:38

Re: Mehrfaches ausführen von Konsolenanwendung verhindern /M
 
Einfachste Lösung:

Delphi-Quellcode:
program ProjectMutex;

{$APPTYPE CONSOLE}

uses
  Windows;

var
  mHandle: THandle;
begin
  mHandle := CreateMutex(nil, True, '979246B5-A7CA-7E5F-A01C-8034E778B70C');
  if GetLastError = ERROR_ALREADY_EXISTS then
  begin
    Halt;
  end;

   // machwas
   ReadLn;

   if mHandle <> 0 then
     CloseHandle(mHandle);

end.
Andere Lösung: eine Unit schreiben, die man im Projekt möglichst weit oben in der uses-Liste angibt. Darin wie bisher mit initialization und finalization arbeiten.

lockbox 8. Jul 2009 16:16

Re: Mehrfaches ausführen von Konsolenanwendung verhindern /M
 
Wuii mjustin danke für die schnelle Antwort :-D Wobei.. da hätte ich auch als Anfänger selbst drauf kommen müssen. Gruß.

SirThornberry 8. Jul 2009 16:22

Re: Mehrfaches ausführen von Konsolenanwendung verhindern /M
 
fallen initialization und finalization in Konsolenanwendungen wirklich weg? :shock:

mjustin 8. Jul 2009 16:31

Re: Mehrfaches ausführen von Konsolenanwendung verhindern /M
 
Zitat:

Zitat von SirThornberry
fallen initialization und finalization in Konsolenanwendungen wirklich weg? :shock:

In der dpr Datei kann man sie nicht verwenden ... aber in einer verwendeten Unit natürlich schon ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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