Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wahlweise mehrfachen Programmstart verhindern (https://www.delphipraxis.net/54703-wahlweise-mehrfachen-programmstart-verhindern.html)

hsbc 10. Okt 2005 11:11


Wahlweise mehrfachen Programmstart verhindern
 
Hallo allerseits,

ich verwende in meiner Anwendung folgenden Code:

Delphi-Quellcode:
initialization
  mHandle := CreateMutex(nil, true, 'anwendung.exe');
  if (GetLastError = Error_Already_Exists) then halt;

finalization
  if mHandle <> 0 then CloseHandle(mHandle);
welcher auch einwandfrei funktioniert.

Jetzt möchte ich in das Programm einen Schalter einbauen, wo der Anwender selbst auswählen kann, ob er zulassen möchte, dass die Anwendung mehrfach gestartet werden kann oder nicht. Gibt es hier eine Möglichkeit ???

mfg
Herbert

MagicAndre1981 10. Okt 2005 11:12

Re: Wahlweise mehrfachen Programmstart verhindern
 
Bei den JEDIs gibts 'ne Komponente, die das kann.

RavenIV 10. Okt 2005 11:26

Re: Wahlweise mehrfachen Programmstart verhindern
 
Zitat:

Zitat von MagicAndre1981
Bei den JEDIs gibts 'ne Komponente, die das kann.

gibt's diese Komponente auch ohne dass man die Jedi installiert?
das ist immer gleich so 'n Haufen Zeugs bei den Jedis...

shmia 10. Okt 2005 11:57

Re: Wahlweise mehrfachen Programmstart verhindern
 
Delphi-Quellcode:
initialization
  mHandle := CreateMutex(nil, true, 'anwendung.exe');
  if (GetLastError = Error_Already_Exists) and not FindCmdLineSwitch('nolimit', ['-','/'], True) then halt;

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

hsbc 10. Okt 2005 12:33

Re: Wahlweise mehrfachen Programmstart verhindern
 
Danke erstmal für die Antworten.

Ich habe jetzt den Tipp von shmia eingebaut - funktioniert einwandfrei. Allerbesten Dank dafür !!!

mfg
Herbert

shmia 10. Okt 2005 12:53

Re: Wahlweise mehrfachen Programmstart verhindern
 
Zitat:

Zitat von RavenIV
gibt's diese Komponente auch ohne dass man die Jedi installiert?
das ist immer gleich so 'n Haufen Zeugs bei den Jedis...

In der JCL gibt die Klasse TJclAppInstances in Unit JclAppInst.
Das ist keine Komponente, die installiert werden muss.
IMHO ist diese Klasse das Beste, was es zum Thema "Programm nur einmal starten" gibt.

RavenIV 10. Okt 2005 13:08

Re: Wahlweise mehrfachen Programmstart verhindern
 
Zitat:

Zitat von shmia
Zitat:

Zitat von RavenIV
gibt's diese Komponente auch ohne dass man die Jedi installiert?
das ist immer gleich so 'n Haufen Zeugs bei den Jedis...

In der JCL gibt die Klasse TJclAppInstances in Unit JclAppInst.
Das ist keine Komponente, die installiert werden muss.
IMHO ist diese Klasse das Beste, was es zum Thema "Programm nur einmal starten" gibt.

würdest du den code der Klasse bitte posten?
ich möchte dieses Paket nicht extra installieren...

shmia 10. Okt 2005 14:42

Re: Wahlweise mehrfachen Programmstart verhindern
 
Zitat:

Zitat von RavenIV
würdest du den code der Klasse bitte posten?
ich möchte dieses Paket nicht extra installieren...

Das geht nicht so einfach. :roll:
Die Klasse bzw. Unit hat Abhängigkeiten zu 3 weiteren Units aus der JCL.
Du solltest die JCL ruhig installieren; ich kann das nur empfehlen.
Die JCL ist sozusagen alles das, was Borland bei seiner RTL vergessen oder übersehen hat.
Hier waren Delphi Cracks (z.B. Robert Rossmair) am Werke; das lohnt sich wirklich.

ils566 27. Dez 2005 20:24

Re: Wahlweise mehrfachen Programmstart verhindern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier ist ein Beispiel wie es geht.
Das Beispiel ist schon älter, könnte aber (mit geringen Anpassungen) funktionieren.
Ich hoffe es hilft.

Diese Unit bitte NICHT downloaden, nehmt die unit von meinem nächsten Posting. Die habe ich analysiert, korrigiert und "dechiffriert". Sie funktioniert nun!

ils566 27. Dez 2005 22:17

Re: Wahlweise mehrfachen Programmstart verhindern
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, jetzt habe ich das vorhergehende Beispiel überarbeitet.

Jetzt funktioniert es mit D6 auf W2K auf jeden Fall.

Viel Spaß damit.


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