Programm nur einmal öffnen



  • Hallo.

    Ich habe folgende Frage: Wie ist es moeglich, dass wenn ich mein Programm starte und bereits eine Instanz davon laeuft, diese aktiviert wird, und nicht eine zweite Instanz des Programms gestartet wird?
    Kurz: Ich will, dass sich mein Programm nur einmal oeffnen laesst.

    Kann mir da jemand weiterhelfen?

    Danke schonmal, Horsti



  • Hallo

    dazu gibt es ein Borland-Beispiel in <BCB-Path>/Examples/Controls/SingleInst

    bis bald
    akari



  • Problem: Das Programm kompiliert bei mir nicht, Borland verlangt nach der Datei "SingleAppInstance.bpi", die bei dem Beispiel jedoch nicht dabei ist, und aus dem Quelltext werd ich jetzt nicht so richtig schlau. Braucht man das alles, kann doch eigentlich nicht so kompliziert sein?!



  • 1. wegen der datei: suschen

    2. Erstelle eine Datei.
    Beim öffnen des programmes wird geprüft, ob sie exstiert.
    wenn ja, umbenennen
    wenn nein prog beenden

    beim beenden die Datei "zürück-umbenennen";

    corvin



  • Oder (weiss aber nich wie des geht):

    Schauen, ob Prozess läuft.
    Wenn ja: ende
    Wenn nein: OK

    Gibt hier im forum ein beispiel, glaub ich(suche)

    corvin



  • Hallo

    das liegt daran das du falsch vorgegangen bist.
    - öffne .bpg Datei
    - wechsel zur Projektverwaltung, und mach doppeltklick auf Single...bpl
    - in dem neuen Dialog führst du Compilieren aus. Es sollte keine weitere Nachricht kommen
    - schließe den Dialog und geh zurück zur Projektverwaltung, dort doppelklick auf dclSingle...bpl
    - in dem Dialog fürhst du Installieren aus. Dort sollte die Nachricht kommen, das ein Control installiert wurde.
    - wähle in der Projektverwaltung das letzte Projekt aus und führ es aus.

    Jetzt wird in dem letzten Programm die neu installierte Komponente benutzt, die auch du in deinen eigenen Projekten verwenden kannst.

    /Edit @ corvin : Dein erste Vorschlag ist Unsinn. Der zweite ist in Ordnung.
    Die von mir genannte Komponente arbeitet hingegen mit gemeinsamen Speicherbereichen, um über IDs sich zu identifizieren.

    bis bald
    akari



  • Also erstmal dankeschoen.

    Bin deiner Anleitung nachgegangen, kompilieren funktioniert, starten des Programms auch, dann kommt leider folgende Fehlermeldung beim klicken auf test:

    "Assertion failed: ManualInstance->Enabled == false, file c:\...\singleinstancesampleunit.cpp, line 49"



  • Hallo

    also bei meinem BCB5 läuft das Programm.
    Ich habe jetzt keine Zeit das nachzuvollziehen. Wenn du das nicht selber korrigieren kannst, dann schau dir hier den Quellcode an und übernimm diesen.

    bis bald
    akari





  • Danke dir, nach so einer Loesung habe ich gesucht!

    Gruss, der Horst


Anmelden zum Antworten