Autoit das Programm wenn es sich schließt neu Startet

  • Hey Leute

    und zwar geht es um folgendes ich bin grade dabei mich in Auto It einzuarbeiten doch ich bin noch nciht wirklich weit. Doch nun brauche ich ein Programm das wenn sich ein bestimmtes Programm schließt es neu Startet.

    Mein problem ist das das Programm sich jedesmal nach ungefähr 10 Minuten schließt manchmal auch erst nach 20 Minuten ich brauche es aber am laufen damit mein Server aktiv ist. Und das AutoIt programm soll es nur starten wenn es sich schließt.
    Kann mir da wer weiterhelfen?

    Danke im Vorraus

    Kumpel-Blase

  • [autoit]

    While 1
    While ProcessExists("Prozessname.exe")
    Sleep(100)
    WEnd
    Run("Pfad zur exe")
    WEnd

    [/autoit]

    edit: Willkommen im forum :party:

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Edit: @Cartan

    Wird warscheinlich mehrmals gestartet.
    Ich würde hinter das Run noch ein Sleep machen.

    mfg Ubuntu

  • Jo, hier nochmal verbessert (und eleganter als mit sleep :D :(

    [autoit]

    While 1
    While ProcessExists("Prozessname.exe")
    Sleep(100)
    WEnd
    Run("Pfad zur exe")
    While Not ProcessExists("Prozessname.exe")
    Sleep(100)
    WEnd
    WEnd

    [/autoit]
    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Meine Version:

    [autoit]

    While 1
    If ProcessExists("Prozessname.exe") Then
    Sleep(100)
    Else
    ShellExecute("vollen Pfad zur Exe")
    EndIf
    WEnd

    [/autoit]


    (NICHT GETESTET)

  • Also was mich interressiert ist startet das den prozess der auf dem Destkop liegt?
    und ist es nicht möglich das es nur startet wenn das Programm down ist?
    Das problem ist auch das es im Taskmanager 30 Prozesse gezeigt werden, da das Programm pro eingeloggten Gerät ein eigenen Prozess öffnet.

    Danke euch allen schonmal für das was ihr gebastelt habt!

  • [autoit]

    ;Ich war mal so frei das zu kommentieren und zu modifizieren
    While 1;Endlosschleife
    While ProcessExists("Prozessname.exe") or ProcessExists("Prozessname2.exe") or ProcessExists("Prozessname3.exe") or ;... du kannst so lange weitermachen wie du willst
    Sleep(100);gg auslastung
    WEnd;Sollte also keiner der oben genannten Prozesse vorliegen wird das weiter unten gemacht
    Run("Pfad zur exe");Die .exe wird ausgeführt du musst "pfad zur exe einfach als pfad einbeben, also C:\Dokumente Einstellungen User Dektop oder du verwendest ein Makro
    While Not ProcessExists("Prozessname.exe") or ProcessExists("Prozessname2.exe") or ProcessExists("Prozessname3.exe"); ... - danach wird gewartet bis der Prozess zum ausgeführeten Programm existiert
    Sleep(100)
    WEnd;Wenn er exestiert geht es wieder von vorne los
    WEnd

    [/autoit]
  • Also nochmal genau.

    Das Programm schließt sich immer irgendwann ist nicht genau definierbar wann. Sobald es startet öffnet es im Taskmanager 30 Prozesse.
    Ich brauche einfach eine möglichkeit das sobald sich das Programm schließt es neu geöffnet wird.

    Das heißt

    Es ist zu AutoIt öffnet es. Es schließt sich Auto it öffnet es wieder!

  • @Cartan: Was bringt die While Not Exists Schleife?? Ich glaub die wird net unbedingt benötigt

    Das programm würde sonst mehrere male ausgeführt werden, da der prozess nicht sofort warhgenommen wird ^^

    mfg Ubuntu

  • Also ist das der Code den ich suche?

  • Du musst nur
    "Prozessname.exe"
    durch den Namen des Prozesses ersetzten (kannste im Taskmanager finden)
    und
    "Pfad zur exe"
    durch z.B. @desktopDir & "\Programm.exe"
    ersetzten

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Das macht so ziemlich keinen Sinn, warum sollte das Programm gestartet werden, wenn es noch läuft?

  • Das heisst ja du musst ... s.o.

    mfg Ubuntu

  • Also ist das der Code den ich suche?

    Nein denn dieses Skript würde nur einmal deine EXE restarten und danach in der nächsten While ...Wend verbringen bis du manuell deinen EXE neu gestartet hast, danach wieder von neuem Restart usw.
    die Lösung am Beispiel von Notepad:

    [autoit]

    While 1
    While ProcessExists("notepad.exe")
    Sleep(100)
    WEnd
    Run("notepad.exe")
    WEnd

    [/autoit]

    du kannst jetzt Notepad nicht mehr beenden bis das Skript abgebrochen wird,

    mfg (Auto)Bert

  • Das Problem ist das es gleichzeitig 35 oder mehr Prozesse sind die alle den gleichen Namen tragen.
    Oder macht das nichts?

    MFG
    Blase

  • Das Problem ist das es gleichzeitig 35 oder mehr Prozesse sind die alle den gleichen Namen tragen.
    Oder macht das nichts?

    Wenn du mehrere gleiche Prozesse hast und sich einer nach dem anderen verabschiedet reagiert das Skript erst wenn der letzte Prozess geschlossen wurde.

    mfg (Auto)Bert

  • So sollte es funktionieren:

    [autoit]

    Global $iPid = 0

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

    While 1
    If Not $iPid Or Not ProcessExists($iPid) Then
    $iPid = Run("notepad.exe")
    ProcessWait($iPid)
    EndIf
    Sleep(100)
    WEnd

    [/autoit]

    Allerdings muß das entsprechende Programm das erste mal auch von diesem Script aus gestartet werden...

    mfgE