Script funktioniert nicht immer. Warum?

  • Hallo,

    ich habe da mal eine Frage.

    Mein Script öffnet einen Browser im Vollbildmodus mit einer HTML Datei aus dem Netzt und soll sich nach 1 Minuten der Inaktivität (Maus) von selbst wieder schliessen und dabei dann ein anderes Programm aus der Taskleiste wieder in den Vordergrund holen. Danke an alle die mir hier dabei geholfen haben!

    Soweit läuft das Script 1a, doch manchmal habe ich das Problem das sich der Browser nicht genau nach meiner eingestellten 1 Minute von selbst schliesst, sondern erst nach 5 oder 7 ... usw. Woran kann es liegen? Ist hier irgendwas falsch gescriptet? Oder liegt es daran das die Maus auf der HTML Datei im Hintergrund durch irgendeinen im Hintergrund laufenden Prozess (wie zB. einer Flashdatei) aktiviert wird? Wenn ich die Maus dann nach 5 Minuten mal bewege weil ich die Warterei leid bin und dann wieder ruhen lasse fährt der Browser dann doch nach einer Minute runter.

    Wo kann ich das herausfinden was da im Busch ist?

    Für mich sieht es so aus als wenn das Script eine initiale Bewegung der Maus braucht um dann die definierte Zeit herunterzuzählen zu können. Wenn ich also die EXE starte und gleich die Maus loslasse, tut sich nix. Wenn ich die Maus aber von Anfang an ein wenig bewege dann schliesst sich wie gewünscht der Browser nach der 1 Minute. Hmmm...kann man die erste Bewegung der Maus irgenwie initialisieren sodass gleich bei Ausführung des Scriptes der Countdown startet? Es ist wichtig das der Browser nach Inaktivität herunterfährt, aber er darf nicht herunterfahren wenn jemand gerade dabei ist in der Seite herumzuspielen. Also es darf das Schliessen des Browsers nicht erzwungen werden.

    Das Script:

    [autoit]


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

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

    $name = IniRead(@ScriptDir & "\tireconfig.ini", "Tireconfig", "Ap", "" )

    [/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 & "\tireconfig.ini", "Tireconfig", "Path", "" ))

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

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

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

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

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

    Func Kill()
    WinActivate($name)
    WinSetState($name, "", @SW_RESTORE)
    Exit
    EndFunc

    [/autoit]

    5 Mal editiert, zuletzt von ePole (19. Oktober 2009 um 11:54)

  • HI!

    Probiers mal mit.

    [autoit]


    #include <Timers.au3>
    $maxIdle_min = 1

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

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

    [/autoit]

    If not :?: then ?( else :thumbup:

  • [autoit]

    #include <Timers.au3>
    $maxIdle_min = 1

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

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

    [/autoit]


    ganz lieben dank! hat erstmal keine Besserung gebracht :?:
    aber es geht dir doch sicherlich nur um diese zeile hier? denn alles andere hab ich ja auch, oder?
    aber was genau machen diese zeilen anders? Das wäre wichtig für mich es zu verstehen.

    [autoit]

    Do
    sleep(200)
    $timer = _Timer_GetIdleTime()
    Until $timer > $maxIdle_min*10*1000

    [/autoit]

    Diese Zeile sucht sich den Wert ja nur aus der INI

    [autoit]

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

    [/autoit]

    4 Mal editiert, zuletzt von ePole (19. Oktober 2009 um 12:36)

  • Also ich gebe mir jetzt mal eine mögliche Antwort.

    Kann es sein das es an dieser Zeile hier liegt?

    [autoit]

    $maxIdle_min = 1

    [/autoit]

    Ist es fehleranfällig sich Daten aus der INI zu holen?

    [autoit]

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

    [/autoit]

    2 Mal editiert, zuletzt von ePole (19. Oktober 2009 um 14:28)

  • Hallo ePole,

    Soweit läuft das Script 1a, doch manchmal habe ich das Problem das sich der Browser nicht genau nach meiner eingestellten 1 Minute von selbst schliesst, sondern erst nach 5 oder 7 ... usw. Woran kann es liegen?


    Die Func _Timer_GetIdleTime() liefert die Ticks seit der letzten Benutzeraktivität zurück. Dies gilt aber für alle Aktivitäten nicht nur für dein Programm,

    mfg (Auto)Bert


  • Die Func _Timer_GetIdleTime() liefert die Ticks seit der letzten Benutzeraktivität zurück. Dies gilt aber für alle Aktivitäten nicht nur für dein Programm,

    mfg (Auto)Bert

    hi AutoBert,

    das ist aber nicht das was ich brauche. was wird denn da alles noch abgefragt?

    gibt es denn eine Abfrage die nur die mausaktivität abfragt?