Programm erst starten, wenn ein anderes gestartet wurde

  • Hi
    ich habe folgendes Problem: ich habe mal von einem bekannten ein bzw. 2 mit Autoit erstellte Programme bekommen.
    Das eine ist das Hauptprogramm aber man kann es nur öffnen wenn man das andere schon geöffnet hat.
    Wenn man den PC wieder abschaltet muss man wieder erst das "Aktivierungsprogramm" ausführen.
    Jetzt wüsste ich gerne wie man sowas machen kann, also welche möglichkeiten es dafür gibt, denn es gibt mit Sicherheit mehr als eine.

    thx im Voraus cu

  • Ich würde zuvor prüfen, ob die Exe-Datei vorhanden ist.

    Also in dieser Form:
    - ist Programm vorhanden?
    - wenn "JA" dann prüfen ob Prozess gestartet ist (siehe Beitrag von muh-Kuh)
    - wenn "Nein" dann Exit und Hinweisfenster, das ..... fehlt.

    Gruß, Crazy-A.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Du könntest auch Singleton misbrauchen :)

    Spoiler anzeigen
    [autoit]

    ; erstes Programm
    #include <Misc.au3>
    #NoTrayIcon
    If _Singleton("129236573648645506",1) = 0 Then Exit
    While 1
    Sleep(100000)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ; Zu schützendes Programm
    #include <Misc.au3>
    If _Singleton("129236573648645506",1) <> 0 Then
    MsgBox(0,"","Anderes Programm läuft nicht")
    Exit
    EndIf

    [/autoit]
  • Das mit dem Singleton ist sowas was ich meinte, was richtig kreatives.
    Allerdings verstehe ich nicht ganz was da passiert könnteste das bitte mal erklären?

    Thx an alle

    eagle

  • _Singleton erstellt einen Mutex.
    Wenn er schon existiert, dann gibt die Funktion 0 zurück, sonst das handle zum neu erstellten :)
    Der Mutex wird gelöscht, wenn alle Programme, die versucht haben, ihn zu erstellen, geschlossen sind.

    In Programm1 wird er erstellt, und wenn er schon existiert, d.h. das Programm schon läuft, wird es nicht noch mal gestartet.
    Programm 2 lässt sich nur starten, wenn der Mutex schon exisiert.

  • Ok aber da steht ja If _Singleton("129236573648645506",1) = 0 Then und so weiter wird da denn schon der Mutex erstellt oder muss ich das noch machen?
    d.h.: könnte ich theoretisch diesen Code-Abschnitt in einem Programm verwenden oder würde das nicht funktionieren weil z.b. noch kein Mutex erstellt wurde?

  • _Singleton :
    Erstellt den Mutex.
    Wenn er schon existiert, wird keiner erstellt und Return = 0 :)
    Wenn er nicht existiert wird der Zeiger zum Mutex zurückgegeben. ( Return > 0 )