Delphi-PRAXiS
Seite 2 von 6     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Verhindern eine Anwendung mehrfach zu starten (https://www.delphipraxis.net/113334-verhindern-eine-anwendung-mehrfach-zu-starten.html)

SubData 6. Mai 2008 13:55

Re: Verhindern eine Anwendung mehrfach zu starten
 
Eine Alternative:

Delphi-Quellcode:
initialization
  hApp := CreateMutex(nil, True, 'APPNAME');
  if GetLastError = ERROR_ALREADY_EXISTS then
  begin
    MessageDlg('Das Programm kann nur einmal gestart werden!', mtError, [mbOK],0);
    Halt;
  end;

finalization
  if hApp <> 0 then CloseHandle(hApp);

Edit: Hab gerade gesehen, dass Luckie einen fast identischen Code bereits verlinkt hat.

SaFu 6. Mai 2008 13:58

Re: Verhindern eine Anwendung mehrfach zu starten
 
Also ich habe den Code von Luckie als unit eingebunden und der Funzt bei mir schon ewig ohne Probleme

Moony 6. Mai 2008 14:04

Re: Verhindern eine Anwendung mehrfach zu starten
 
Ich habe jetzt die Komponente von CalganX genommen. Aber irgendwie funktioniert das alles nicht so wie es soll....

@Subdata:
so habe ich es auch schon probiert, aber alles erfolglos. Ich bekomme jedesmal eine dicke Exception wenn ich die Applikation das zweite Mal starte.

@fuknersascha:
Ich habe jetzt nochmals den Code von Luckie 1:1 kopiert nur den Unitnamen umbenannt und ich bekomme beim zweiten Start des Applikation eine Exception.


Bei dieser Zeile:
Delphi-Quellcode:
mHandle := CreateMutex(nil,True,'meinProgrammtitel');
steht der Programmtitel statisch als String.

SaFu 6. Mai 2008 14:08

Re: Verhindern eine Anwendung mehrfach zu starten
 
Da muss dein Programmtitel rein also MeinProgramm.exe

Moony 6. Mai 2008 14:09

Re: Verhindern eine Anwendung mehrfach zu starten
 
Mit oder ohne Extention?

Luckie 6. Mai 2008 14:09

Re: Verhindern eine Anwendung mehrfach zu starten
 
Nein, da kann jede beliebige, eindeutige Zeichenfolge stehen. Am besten nimmt man eine GUID dafür.

Klaus01 6. Mai 2008 14:10

Re: Verhindern eine Anwendung mehrfach zu starten
 
Zitat:

Zitat von Moony
Ich habe jetzt nochmals den Code von Luckie 1:1 kopiert nur den Unitnamen umbenannt und ich bekomme beim zweiten Start des Applikation eine Exception.


Delphi-Quellcode:
mHandle := CreateMutex(nil,True,'meinProgrammtitel');

Hallo,

bekommst Du die Exception auch, wenn Du die Applikation
nicht aus der IDE startest?

Grüße
Klaus

TeronG 6. Mai 2008 14:10

Re: Verhindern eine Anwendung mehrfach zu starten
 
Notfalls:
Bei LMD-Tools gibt es ein "OneInstance" ...
Entweder Downloaden (http://www.lmdinnovative.com/) oder auf der Partner-Software-CD von Borland gugn (da sollts auch druff sein)

Sharky 6. Mai 2008 14:11

Re: Verhindern eine Anwendung mehrfach zu starten
 
Zitat:

Zitat von fuknersascha
Da muss dein Programmtitel rein also MeinProgramm.exe

Nich ganz. Dort muss ein eindeutiger String stehn. Am einfachsten eine GUI-ID

[EDIT]Da guckt man vor dem absenden mal schnell etwas nach; und was passiert? Luckie sendet 2 Minuten früher :cry:

SubData 6. Mai 2008 14:11

Re: Verhindern eine Anwendung mehrfach zu starten
 
Zitat:

Zitat von fuknersascha
Da muss dein Programmtitel rein also MeinProgramm.exe

Beim Mutex kannst du "irgendeinen" String verwenden.
Wie Luckie bereits erwähnte, bietet sich eine GUID an.

Edit: Der Hai war schneller ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:33 Uhr.
Seite 2 von 6     12 34     Letzte »    

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