Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Einmaliges aufstarten eines Programms (https://www.delphipraxis.net/33138-einmaliges-aufstarten-eines-programms.html)

OnFire 2. Nov 2004 10:26


Einmaliges aufstarten eines Programms
 
Hey Leute,

ich habe ein Problem...

Ich habe ein Programm geschrieben und will, dass man es sobald es einmal läuft nicht noch ein zweites Mal aufstarten kann, da ich verhindern will, das es mehrfach auf einem PC läuft.

Wie kann ich das machen???

Wäre echt froh um Hilfe....


Thanks OnFire :evil:

eassy 2. Nov 2004 10:31

Re: Einmaliges aufstarten eines Programms
 
hi,

ich glaube da gab es hier auch schon mal einen betrag für diese problem.
folgende möglichkeit gibt es: (in deine .dpr datei einfügen)

Delphi-Quellcode:
var
  mHandle: THandle;
begin
  mHandle := CreateMutex(nil,True,'Progammname'); (* hier den Namen eintragen *)
  if GetLastError = ERROR_ALREADY_EXISTS
  then Halt
  else
  begin
    Application.Initialize;
    ...
    Application.Run;
  end;
  if mHandle <> 0 then
   CloseHandle(mHandle);
end.
gruß
eassy

Jelly 2. Nov 2004 10:32

Re: Einmaliges aufstarten eines Programms
 
Hallo,

ich mal Folgendes als Code gefunden und auch schon benutz.. Einfach deine Projektdatei entsprechend anpassen:
Delphi-Quellcode:
PROGRAM Project1;


USES
    Forms



{ Folgende Units müssen hinzugefügt werden }

Windows,
Dialogs,


{ Ende der hinzugefügten Units }




Unit1 in 'Unit1.pas' { Form1 };

{$R *.RES}

VAR
  hMutex: THandle;
begin
  hMutex := CreateMutex(nil, True, 'Mein Programm');

{Der letzte Parameter ist systemweit gültig und sollte daher eindeutig sein,
damit es zu keiner Kollision mit anderen Programmen kommt}

IF GetLastError = ERROR_ALREADY_EXISTS THEN BEGIN ShowMessage('Das Programm kann nur einmal gestartet werden!'); Halt; { Programm wird beendet }
END;

{Appl ikation wird erstellt}

Application.Initialize;Application.CreateForm(TForm1, Form1);
Application.Run;

{Freigabe des erstellen Objekts}

IF hMutex <> 0 THEN CloseHandle(hMutex);
END.
Gruß

:wall: Zu langsam

Matze 2. Nov 2004 10:33

Re: Einmaliges aufstarten eines Programms
 
Oder einfach den Code aus der Code-Library verwenden: Klick


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