Programm beenden und wieder starten

  • Hallo liebe Forenmitglieder,

    meine EXE wird aus einer Applikation heraus gestartet. Sie startet einen Webbroser. Doch wenn der Webbrowser startet verschwindet die Applikation aus der er gestartet wurde auf die Tastleiste. Kann ich in meinem Script irgendwo die Anweisung hinterlassen das diese Applikation beendet wird bzw. dann wieder in den Vordergrund kommt wenn mein Script beendet ist?

    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <IE.au3>
    #Include <Timers.au3>

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

    HotKeySet("{ESC}","Kill")
    Global Const $WS_EX_COMPOSITED = 0x02000000
    $gui = GUICreate("",300,300,0,0, BitOR($WS_SIZEBOX, $WS_POPUPWINDOW, $WS_CLIPCHILDREN), BitOR($WS_EX_TOOLWINDOW, $WS_EX_COMPOSITED))
    GUISetState()
    GUISetState(@SW_MAXIMIZE)

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

    $GUISize = WinGetPos($gui)
    $eIE = _IECreateEmbedded()
    GUICtrlCreateObj($eIE, $GUISize[0], $GUISize[1], $GUISize[2], $GUISize[3])
    _IENavigate($eIE,IniRead(@ScriptDir & "\shutdown.ini", "Tireconfig", "Path", "" ))

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

    $maxIdle_min = IniRead(@ScriptDir & "\shutdown.ini", "Tireconfig", "Time", "" )

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

    Do
    sleep(200)
    Until _Timer_GetIdleTime() > $maxIdle_min*60*1000

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

    Exit

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

    Func Kill()
    Exit
    EndFunc

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

    While 1
    sleep(200)
    WEnd

    [/autoit]

    Lieben Dank
    ePole

  • Weis nict ob ich dich richtig verstanden habe.

    Also wenn du, wenn dein Prog beendet wird das andere wieder sichtbar machen willst müsste es mit winactivate gehen glaube ich (einfach vor Exit hinschreiben)

    Und wenn du die apllikation beenden willst kannst es ja mal mit Processclose versuchen

    Mfg

    Computers are like Airconditioning. They don´t work with open Windows.

  • Also wenn du, wenn dein Prog beendet wird das andere wieder sichtbar machen willst müsste es mit winactivate gehen glaube ich (einfach vor Exit hinschreiben)

    ja genau das meinte ich, aber damit hat es nicht funktioniert ?(

    [autoit]


    Func Kill()
    winactivate Exit
    EndFunc

    [/autoit]
  • wie kann ich denn das programm das auf die taskleiste verschwunden ist wieder "reanimieren" sodass es aufklappt?

    oder noch besser wäre wenn das andere proghramm gar nicht erst auf die taskleiste verschwindet sondern im hintergrund weiterläuft. und wenn dann mein browser geschlossen wird sieht man das andere programm wieder!

  • Musst das schon in einzelne Zeilen schreiben und Parameter benutzen ;)

    Also

    [autoit]

    Func Kill()
    winactivate("Programmname")
    Exit
    EndFunc

    [/autoit]

    Und falls du ein Programm verstecken und wieder anzeigen willst geht das mit

    [autoit]

    WinSetState("Name", "", @SW_HIDE)

    [/autoit]

    bzw.

    [autoit]

    WinSetState("Name", "", @SW_SHOW)

    [/autoit]

    .

    Falls das Programm, dass du meinst, sich zu einem TrayIcon minimiert, weiß ich auch nicht mehr weiter ^^

  • muss ich den genauen pfad bei "Name" eingeben?
    und wo genau in meinem script muss ich das einsetzen?

    das programm fährt automatisch auf die taskleiste ... aber dann würde ich es gerne wieder sichtbar machen.

    ist das script dann richtig?

  • Bei "Name" gibst du den Fensternamen an, nicht den Prozessnamen oda so. An der Stelle, an der du das Programm verstecken willst(also wahrscheinlich ganz am Anfang) setzt du den Status @SW_HIDE und wenn du das Fenster wieder anzeigen willst(also wohl am Ende, bevor dein Script sich beendet) setzt du den Status @SW_SHOW, also einfach in eine neue Zeile vor dem WinActivate.

  • Bei name musst du den Title deiner GUI reinschreiben und ich würde stat ext wie arkaneus gesagt mat die gui nur ausblenden denn dann kanst du sie später wieder einblenden also nicht beenden

    @Arkaneus es würde auch mit guisetstate gehen da es die eigene gui ist

  • Es geht doch um die Anwendung, die seinen Script aufruft, oder? Und das ist ja nicht umbedingt ein eigener Script...

    Außer ich hab hier jz alles falsch verstanden...

  • Es geht doch um die Anwendung, die seinen Script aufruft, oder? Und das ist ja nicht umbedingt ein eigener Script...

    Außer ich hab hier jz alles falsch verstanden...

    du hast es genau richtig verstanden...!
    ich tu mich als anfänger blos noch schwer mit dem coden...ausserdem funzt meinen autoatische beenden funktion nicht mehr ... ich werd noch bekloppt 8|

  • Oh ich glaube ich hab es falsch verstanden , aber ePole sollte mal den anderen code posten wenn er aus autoit ist da dort ja die anweisung hinterlassen werden müsste dass er in den vordergrund kommt wenn der browser geschlossen ist

  • das ist das script:

    [autoit]


    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <IE.au3>
    #Include <Timers.au3>

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

    HotKeySet("{ESC}","Kill")
    Global Const $WS_EX_COMPOSITED = 0x02000000
    $gui = GUICreate("",300,300,0,0, BitOR($WS_SIZEBOX, $WS_POPUPWINDOW, $WS_CLIPCHILDREN), BitOR($WS_EX_TOOLWINDOW, $WS_EX_COMPOSITED));Erstellt ein GUI
    GUISetState();Macht es sichtbar
    GUISetState(@SW_MAXIMIZE);maximiert es, und...

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

    $GUISize = WinGetPos($gui)
    $eIE = _IECreateEmbedded()
    GUICtrlCreateObj($eIE, $GUISize[0], $GUISize[1], $GUISize[2], $GUISize[3])
    _IENavigate($eIE,"www.google.de")

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

    $maxIdle_min = 3 ; <---- Hier deine Minutenzahl eintragen

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

    Do
    sleep(200)
    Until _Timer_GetIdleTime() > $maxIdle_min*60*1000

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

    Exit

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

    Func Kill()
    Exit
    EndFunc

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

    hhiiilllffeee...wald vor lauter bäumen is wech 8|

  • Also wenn ich das richtig verstehe ist der Ablauf so:

    Deine Anwendung wird gestartet -> Deine Anwendung startet das Script mit dem Browser -> Benutzer macht seine Aktionen -> Nachdem der Browser geschlossen ist, ist die Anwendung am Anfang minimiert.
    Du möchtest diese aber in den Vordergrund holen?

    Einfach vor Zeile 23, also dem Exit,

    WinSetState("Titel deiner Applikation",0,@SW_RESTORE)

    einfügen. (nicht getestet, kann also auch bullshit sein was ich dir erzähle)

    edit: kann auch sein dass du es mit WinActivate("Titel deiner Applikation")
    machen musst.. kp

  • Hab es mal so umgeschrieben, wie es (wenn ich alles richtig verstehe) sein müsste:

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <IE.au3>
    #Include <Timers.au3>

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

    $name = "Name" ;Hier der Fenstername von dem Programm, was dein Programm aufruft

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

    HotKeySet("{ESC}","Kill")
    Global Const $WS_EX_COMPOSITED = 0x02000000
    $gui = GUICreate("",300,300,0,0, BitOR($WS_SIZEBOX, $WS_POPUPWINDOW, $WS_CLIPCHILDREN), BitOR($WS_EX_TOOLWINDOW, $WS_EX_COMPOSITED));Erstellt ein GUI

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

    WinSetState($name, "", @SW_HIDE) ;versteckt das Fenster

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

    GUISetState($gui);Macht GUI sichtbar
    GUISetState(@SW_MAXIMIZE);maximiert es, und...

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

    $GUISize = WinGetPos($gui)
    $eIE = _IECreateEmbedded()
    GUICtrlCreateObj($eIE, $GUISize[0], $GUISize[1], $GUISize[2], $GUISize[3])
    _IENavigate($eIE,"www.google.de")

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

    $maxIdle_min = 3 ; <---- Hier deine Minutenzahl eintragen

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

    Do
    sleep(200)
    Until _Timer_GetIdleTime() > $maxIdle_min*60*1000

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

    Kill()

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

    Func Kill()
    WinSetState($name, "", @SW_SHOW) ;zeigt Fenster wieder an
    WinActivate($name) ;holt das Fenster wieder in den Vordergrund
    Exit
    EndFunc

    [/autoit]

    Hoffe das is jz richtig :)

    Einmal editiert, zuletzt von Arkaneus (16. Oktober 2009 um 16:20)

  • leider hat das nicht geklappt. sobald mein browser sich schliesst (ob automatisch oder per ESC fährt das andere programm nicht zurück zur anzeige?

    [autoit]


    Do
    sleep(200)
    Until _Timer_GetIdleTime() > $maxIdle_min*60*1000
    WinSetState("Programmname",0,@SW_RESTORE)
    Exit

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

    Func Kill()
    WinSetState("Programmname",0,@SW_RESTORE)
    Exit
    EndFunc

    [/autoit]


    PS. so zwischendurch mal megadanke für den super support!!!

  • das programname in "" muss der title der anderen gui sein die minimiert wurde wenn nicht geht es nicht

  • soweit hat es funktioniert...nur irgendwie hat sich der rechner etwas aufgehangen als ich tabben wollte?? hat das was zu bedeuten?

    ist das script denn so korrekt?

    [autoit]


    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <IE.au3>
    #Include <Timers.au3>

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

    $name = "DerName"

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

    HotKeySet("{ESC}","Kill")
    Global Const $WS_EX_COMPOSITED = 0x02000000
    $gui = GUICreate("",300,300,0,0, BitOR($WS_SIZEBOX, $WS_POPUPWINDOW, $WS_CLIPCHILDREN), BitOR($WS_EX_TOOLWINDOW, $WS_EX_COMPOSITED));Erstellt ein GUI
    GUISetState();Macht es sichtbar
    GUISetState(@SW_MAXIMIZE);maximiert es, und...

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

    $GUISize = WinGetPos($gui)
    $eIE = _IECreateEmbedded()
    GUICtrlCreateObj($eIE, $GUISize[0], $GUISize[1], $GUISize[2], $GUISize[3])
    _IENavigate($eIE,IniRead(@ScriptDir & "\shutdown.ini", "Tireconfig", "Path", "" ))

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

    $maxIdle_min = IniRead(@ScriptDir & "\shutdown.ini", "Tireconfig", "Time", "" ) ; <---- Hier deine Minutenzahl eintragen

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

    Do
    sleep(200)
    Until _Timer_GetIdleTime() > $maxIdle_min*60*1000
    WinSetState($name, "", @SW_SHOW) ;zeigt Fenster wieder an
    WinActivate($name) ;holt das Fenster wieder in den Vordergrund
    Exit

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

    Func Kill()
    WinSetState($name, "", @SW_SHOW) ;zeigt Fenster wieder an
    WinActivate($name) ;holt das Fenster wieder in den Vordergrund
    Exit
    EndFunc

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