AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrfachstart wahlweise erlauben

Ein Thema von hsbc · begonnen am 15. Sep 2005 · letzter Beitrag vom 16. Sep 2005
Antwort Antwort
hsbc

Registriert seit: 28. Jan 2004
Ort: Krems/Donau
404 Beiträge
 
Delphi 7 Professional
 
#1

Mehrfachstart wahlweise erlauben

  Alt 15. Sep 2005, 09:51
Ich habe bei einem Programm von mir den Mehrfachaufruf wie folgt verhindert:

Delphi-Quellcode:
Initialization
  mHandle := CreateMutex ...
das funktioniert auch einwandfrei.

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:

if Mehrfachstart.Checked then ... so kommt natürlich eine Fehlermeldung. Wie kann ich trotzdem wahlweise Mehrfachstart erlauben bzw. verhindern?

Ich hoffe, ich konnte mich verständlich genug ausdrücken.

mfg
Herbert
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Mehrfachstart wahlweise erlauben

  Alt 15. Sep 2005, 09:55
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
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Heffalump

Registriert seit: 3. Aug 2005
278 Beiträge
 
RAD-Studio 2009 Ent
 
#3

Re: Mehrfachstart wahlweise erlauben

  Alt 15. Sep 2005, 10:03
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.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Mehrfachstart wahlweise erlauben

  Alt 15. Sep 2005, 10:07
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 JCL an.
Dort wird gezeigt, wird die Instanzen untereinander Daten austauschen können.
Entweder abkupfern oder JCL direkt verwenden.
Andreas
  Mit Zitat antworten Zitat
orabimus
(Gast)

n/a Beiträge
 
#5

Re: Mehrfachstart wahlweise erlauben

  Alt 16. Sep 2005, 15:25
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

mfg
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Mehrfachstart wahlweise erlauben

  Alt 16. Sep 2005, 15:30
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: Ich seh grade: so ähnlich hat ers ja auch geschrieben )
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:17 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