| |
Visual-Basic EinsteigerIst die Anwendung (exe) schon geöffnet (gestartet) ? | | | Autor: Tagedieb | Datum: 14.02.05 18:44 |
| Hallo und guten Abend,
schon lange beschäftigt mich das Problem, dass ich meine exe mehrfach starten kann.
Ich will hier kurz vorstellen, wie ich das Problem gelöst habe. Zunächst ein Hinweis, meine diesbezugliche Suche in vb@rchiv führte mich unter anderem auf einen toten Link.
Aber nun zum Problem:
Ich habe mir im Startformular des Programms zwei Variablen erstellt:
Dim SchonOffen As Boolean Dim FehlVersuch As Boolean Am Ende des FormLoad Ereignisses (des Startformulars) setze ich SchonOffen auf True:
SchonOffen = True und 'schreibe' den Wert in eine INI Datei (es geht sicher auch irgendeine Text Datei !)
txtInI(19).text = SchonOffen ... (bei mir ist es die Nr. 19)
und schließlich Speichern des Wertes in der INIDatei mit der üblichen Routine.
Der letzte Schritt (Speichern)ist sehr wichtig!
Am Anfang des FormLoad Ereignisses - aber nach Auslesen aller INI's ! - schreibe
ich den folgenden Code:
If txtINI(19).Text = "Wahr" Then
MsgBox "Das Programm ist bereits geöffnet", vbExclamation, " - db -" & _
"Kalender"
FehlVersuch = True 'wichtig, damit das auch nach dem zweiten und
' dritten und ... Versuch funktioniert
Unload Me
Exit Sub
End If Da beim Start der exe (des Programms) auf die INI zugegriffen wird, steht im INI Wert (19) der Wert SchonOffen. Ist er Wahr, dann ist das Programm schon geöffnet.
In der Unload Prozedur steht dann der folgende Code:
If FehlVersuch = False Then
SchonOffen = False
txtINI(19).Text = SchonOffen
End If Damit ist sicher gestellt, dass SchonOffen nur dann auf 'False' gesetzt wird, wenn kein FehlVersuch erfolgte.
Viel Spaß beim Ausprobieren
Gruß Thomas | |
Re: Ist die Anwendung (exe) schon geöffnet (gestartet) ? | | | Autor: Tagedieb | Datum: 14.02.05 23:26 |
| Hallo Master,
'kürzer' da hast du sicher recht, denn bei meinem Code kommt noch das Auslesen und Speichern aus bzw in die INI Datei hinzu! Aber 'einfacher'? Ich habe meine Probleme mit den Apis. Das ist für mich ein Buch mit sieben Siegeln. Nach welchen Kriterien ihr die erstellt, ist mir vollkommen schleierhaft. Ich weiß, dass es Apis fertig gibt, aber selbst das nützt mir nichts, weil ich gar nicht weiß, welche Api für welche Funktion zu gebrauchen ist. Das ist mir alles zu hoch! Und wenn es irgendwie geht, verzichte ich auf Apis in meinen Programmen. Die wenigen, die ich nutze, sind einfach in meinen Code kopiert, ohne sie zu verstehen - ich gebrauche sie einfach nur!
Gruß Thomas | |
Re: Ist die Anwendung (exe) schon geöffnet (gestartet) ? | | | Autor: Elwood | Datum: 15.02.05 11:24 |
| Moin Thomas,
mal ganz ruhig bleiben
API's sind keine Wunder und auch keine Wundertüten....oder vielleicht doch?
Die werden nicht von uns entwickelt, sondern werden vom Hersteller der Software (in diesem Fall Microsoft) bereitgestellt.
API's zu verwenden heisst nicht, dass man alles mit API's machen soll/muß.
Da wo es sich anbietet, nimmt man halt 'ne API und wenn man eine andere Möglichkeit hat....bitteschön.....geht doch auch.
In Deinem Falle könnte Deine Methode zu unerwünschten Nebeneffekten führen.
Wenn Deine Anwendung einfach mal so endet, wie Du es nicht geplant hast (nette Umschreibung für Absturz oder Stecker-Raus), wirst Du die Anwendung erst wieder zum Starten bewegen, wenn die Ini-Datei bereinigt wurde
Den Link, den Dir Master genannt hat ist doch gut
Es gibt dort die einfache Methode App.PrevInstance (übrigens keine API und weiter unten eine komfortable Methode (nicht für den Programmierer, zugegeben, aber dafür für den Anwender :top. Die brauchst Du nur so anwenden, wie es im tipp beschrieben ist und fertig.
Wo ist also das Problem?
ciao
Elwood
Wer sp?ter bremst, ist l?nger schnell | |
Re: Ist die Anwendung (exe) schon geöffnet (gestartet) ? | | | Autor: Tagedieb | Datum: 16.02.05 13:14 |
| Hallo Master, hallo Elwood,
das mit den 'Unerwünschten Nebeneffekten' stimmt. Hab's ausprobiert! Da war meine Idee wohl doch nicht so gut. Habe mir nochmal die einfachste Variante angesehen (ohne Api), If App.PrevInstance Then... Das klappt prima. Danke!
Gruß Thomas | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats sevOutBar 4.0
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|