![]() |
Mehrfachstart wahlweise erlauben
Ich habe bei einem Programm von mir den Mehrfachaufruf wie folgt verhindert:
Delphi-Quellcode:
das funktioniert auch einwandfrei.
Initialization
mHandle := CreateMutex ... Wie kann ich nun erreichen, dass der Anwender selbst einstellen kann, ob das Programm Mehrfachaufrufte zulässt oder nicht. Ich habe dazu einen Menüpunkt eingebaut: Mehrfachstart erlauben - nur kann ich diese Auswertung im Initialisations-Teil der Programmes nicht verwenden, da zu diesem Zeitpunkt ja dort nicht bekannt ist, ob der Menüpunkt aktiviert oder deaktiviert war. Wenn ich im Initialization-Abschnitt eingebe:
Delphi-Quellcode:
so kommt natürlich eine Fehlermeldung. Wie kann ich trotzdem wahlweise Mehrfachstart erlauben bzw. verhindern?
if Mehrfachstart.Checked then ...
Ich hoffe, ich konnte mich verständlich genug ausdrücken. mfg Herbert |
Re: Mehrfachstart wahlweise erlauben
Du speicherst diese Information doch garantiert ab, oder? Dann mußt du nur noch dafür sorgen, daß eben diese Information schon an dieser Stelle wieder geladen ist ;)
//edit: Also natürlich darfst du dann auch nicht auf die CheckBox zugreifen, da die ja zu dem Zeitpunkt noch nicht erstellt ist |
Re: Mehrfachstart wahlweise erlauben
Für den ersten Start des Programmes ist es unerheblich, ob der mehrfache Start erlaubt ist oder nicht. Damit hast Du erstmal den Menüpunkt zur Verfügung. Den benötigten Wert kannst Du nun in der Registry hinterlegen. Jede Instanze die von Deinem Programm gestartet wird muss dann diesen Wert auswerten und entscheiden, macht es die Mutexprüfung oder nicht. Wäre eine Möglichkeit.
|
Re: Mehrfachstart wahlweise erlauben
Es geht ja meistens nicht nur darum, einen mehrfachen Start zu verhindern,
sondern man möchte ja auch, das die neue Instanz mit der bestehenden Instanz kommuniziert. Also die 2. Instanz teilt der 1. Instanz ihre Startparameter mit und beendet sich dann selbst. Bezogen auf dein Problem würde die 2. Instanz die 1. fragen, ob Mehrfachinstanzen erlaubt sind und sich dann ggf. selbst beenden. Diese Variante ist eleganter und besser, als wenn die 2. Instanz die Info aus einer INI-Datei oder der Registry lesen würde. Schau dir mal die Unit JclAppInst aus der ![]() Dort wird gezeigt, wird die Instanzen untereinander Daten austauschen können. Entweder abkupfern oder JCL direkt verwenden. |
Re: Mehrfachstart wahlweise erlauben
Irgendwie erkennt Dein Programm in einer Unit, daß es
===== if Mehrfachstart.Checked then ... ===== schon läuft. Verleg doch einfach die boolsche Abfrage, die "Mehrfachstart.Checked" bedient, in die DPR-Datei Deines Projekts. Die Delphi-DPR-Dateien sind reinrassige Pascal-Dateien, in denen sich fast Alles machen lässt - wenn man sich nur traut :mrgreen: mfg |
Re: Mehrfachstart wahlweise erlauben
:gruebel: Warum mußte das jetzt noch sein?
Erstens gab es jetzt eigentlich schon die Lösung (shmia hat das ja ganz gut erklärt) und zweitens macht er doch schon das, was du vorgeschlagen hast. Nur: wie soll er denn Mehrfachstart.Checked abfragen, bevor Mehrfachstart erstellt wurde? Daraus ergibt sich, er muß die Einstellung vor dem Erstellen des Forms in eine Variable laden, und damit bist du genau bei meinem Vorschlag ;) Aber shmias Lösung ist viel besser, eleganter und praktischer. (Edit: :lol: Ich seh grade: so ähnlich hat ers ja auch geschrieben :lol:) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz