ProcessClose wenn programm minimiert

  • folgende Problemstellung:

    ich starte mit einem kleinen Programm 3 programme. Wenn Programm 1 geschlossen wird muss ich kontrollieren ob der Rekorder im aktiven Fenster ist ( also ob der Arzt gerade noch an einem Diktat arbeitet ) und dann auch die anderen beiden schließen ansonsten muss ich solange warten bis der Rekorder nicht mehr im aktiven Fenster ist.

  • wie ich kontrolliere das $pidEASY nicht im aktiven Fenster läuft also gerade nicht benutzt wird

  • das heißt ich speicher mir _ProcessGetName und schaue ob es nicht der prozess ist den ich beenden will?

  • wäre es dann kurz so möglich?

    das starten der programme klappt hab unten nun daraus gemacht

    Code
    ProcessClose($pidBIL)
    ProcessClose($pidEASY)

    wenn ich nun notepad schließe bleiben die anderen beiden programme leider auf und mein programm schließt trotzdem

    Einmal editiert, zuletzt von Boonlight (9. Februar 2012 um 14:51)

  • - starten meines programms
    - dieses startet als test "notepad.exe" ist später ein externes programm was ich bisher nicht habe
    - danach startet es die programme easy.exe und bil.exe
    - solange wie notepad läuft soll nichts passieren
    - wenn notepad geschlossen wird, soll geschaut werden ob easy.exe aktiv genutzt wird
    - wenn ja warten bis es nicht mehr aktiv ist und dann easy.exe und bil.exe schließen
    - programm ende

  • also so wenn es nur noch im systray ist der "rekorder" dann darf man schließen, wenn es aber als fenster aktiv ist dann nicht weil dann noch ein Diktat offen ist!!!

  • Spoiler anzeigen
    [autoit]


    $notepad=Run("Notepad")

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

    Run("Easy.exe")
    Run("Bil.exe")
    Do
    Sleep(100)
    Until not ProcessExists("Notepad.exe")
    Do
    Sleep(100)
    Until not WinActive("Titel von easy.exe")
    ProcessClose("easy.exe")
    ProcessClose("bil.exe")

    [/autoit]

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • wenn ich notepad schließe kommt keine Messagebox. da ist wohl noch was falsch ;)

  • Problem hierbei ist Winactive schlägt sofort zu wenn man woanders hinklickt ohne das Diktat wirklich zu beenden.
    Was nicht der gewünschten Lösung entspricht. Sondern es sollte wirklich nur alles geschlossen werden, wenn die Symbole nur im Systray zu sehen sind aber man kein Fenster sieht.

  • Du könntest dir auch mit

    [autoit]

    WinList

    [/autoit]

    eine Liste aller Fenster zurück geben lassen und dieses Array dann durchsuchen, ob das Fenster da ist, wenn nicht dann nicht

    -EDIT-

    [autoit]

    #include <Array.au3>
    $notepad=Run("Notepad")

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

    Run("Easy.exe")
    Run("Bil.exe")
    Do
    Sleep(100)
    Until not ProcessExists("Notepad.exe")

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

    MsgBox(0,"","geht")
    While 1
    $List = WinList()
    $search = _ArraySearch($List, "Titel des Fensters",0,0,0,0,0,0)
    If $search = -1 Then ExitLoop
    Sleep (100)
    WEnd

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

    ProcessClose("easy.exe")
    ProcessClose("bil.exe")

    [/autoit]