Per Countdown ein laufendes Programm schliessen

  • Hallo liebe Forenmitglieder.

    ich habe folgende Frage und komme als Einsteiger nicht weiter.

    Ich möchte mir eine Anwendung programmieren (exe) die auf XP läuft und mir zunächst eine andere Anwendung startet und dann wieder beendet wenn nach einer bestimmten Zeit der Inaktivität der Eingabegeräte wie z.B. der Maus nichts geschieht. Eine Timeoutfunktion sozusagen.

    wie setze ich soetwas mit AutoIT um? Welche Befehle brauche ich oder hat jemand für mich sogar ein Beispielcode?

    Für Antworten bin ich sehr dankbar.

    lg ePole

    2 Mal editiert, zuletzt von ePole (16. Oktober 2009 um 10:45)

  • oh klasse, lieben dank für die schnelle antwort.
    das ist für mich alles total neu.
    mit run habe ich es schon geschaft ein programm zu starten. hast du ein einfaches beispiel für mich wie die pid abgefragt wird.

    ich weiss das es zu viel verlangt ist ein script schreiben zu lassen...aber ich bräuchte mehr details, da ich totaler anfänger bin.

    mein script sieht bis dato so aus *peinlich* (und das nach 3 stunden rechercvhe!!! *doppelpeinlich*

    Code
    Run("C:\Dokumente und Einstellungen\jv\Eigene Dateien\Scripte Test\test.exe)

    lieb von dir.
    ePole

  • Du brauchst die PID nicht abfragen du musst nur eine Variable vor deinem Run() Befehl setzen in dieser wird dann die PID gespeichert.

    Spoiler anzeigen
    [autoit]

    $pid = Run("C:\DeinProgramm.exe")

    [/autoit]

    MfG xXTobi93Xx

  • toller tipp!!! das klappt ja schonmal...gleich nachdem ich das programm starte wird es auch wieder beendet...nun muss ich dazwischen nur noch eine funktion einbauen die xx sekunden wartet wenn die maus inaktiv ist...

    Code
    $pid = Run("C:\meine.exe")
    ProcessClose ($pid)

    oh man...ich glaub das ist zu hart für mich...gibtb es vieleicht tutorials?

    ganz lieben dank für den tollen support bis hierhin!!!

  • du bist ja super...vielen dank für die super hilfe!!!! :thumbup:

    ich bekomme nur ein fehler:

    Code
    AutoIt Error
    Line -1:
    Error: Unknown function name.

    und die Anwendung beendet nicht, startet aber...was ist denn ein fehler in zeile -1 ???

  • Du musst in die erste Zeile noch "#include <Timers.au3>" ohne die "" einfügen.
    Also so:

    [autoit]

    #include <Timers.au3>
    $maxIdle_min = 5 ; <== Minuten für Nixtun
    $pid = Run("C:\meine.exe")
    Do
    Sleep(100)
    Until _Timer_GetIdleTime() > $maxIdle_min*60*1000 ; da Rückgabe in ms: min * 60(s) * 1000 (ms)
    ProcessClose ($pid)

    [/autoit]

    MfG xXTobi93Xx

  • Also erstmal :thumbup: :thumbup: :thumbup: :thumbup:
    Ich bin von Euch begeistert!!!

    Vielen Dank ich habe jetzt ein Tutorial von Euch bekommen (Link) und eine Beispielanwendung die funktioniert. Damit kann ich begeistert schonmal herumexperimentieren. So macht ein Forum echt Spass!!!

    Ich weiss ihr werden mich jetzt prügelnd aus diesem Forum werfen...aber was genau macht dieser Eintrag "#Include <Timers.au3>"?

    Ich muss schon sagen ... als ich PHP und MySQL gelernt habe hatte ich nicht so einen guten Support! Ich werde mein Wissen in Zukunft auch gerne weitergeben!
    :love:

  • Also "_Timer_GetIdleTime" ist keine Standart Funktion wie z.B. "Run" oder "Sleep" sondern sie ist in einer Include-Datei vorhanden die du in deinem Instalationsverzeichnis unter "Includes" findest also z.B. "C:\Programme\AutoIt3\Include".
    Include heißt einbinden und indem du jetzt z.B. die "Timers.au3" includest (einbindest), dann werden die ganzen Funktionen dieses Skriptes in deins eingebunden.
    Sprich in der Incude-Datei "Timers.au3" ist die Funktion "_Timer_GetIdleTime" und um diese Aufrufen zu können musst du die "Timers.au3" includen also einbinden.

    Hoffe es ist verständlich^^

    MfG xXTobi93Xx

  • ja das ist verständlich, vielen dank, habe die datei gefunden...aber das bedeutet auch das auf jedem rechner auf dem meine exe funktionieren soll auch autoit installiert sein muss? oder kann ich auch den inhalt dieser datei in meine einfügen?

  • Und einfacher gesagt: Es gibt Standard- und Nicht-Standard-Funktionen.
    Standardfunktionen sind immer in deinem Script. (zb. GUICreate() )
    Nichtstandardfunktionen müssen erst eingebunden werden. dies dient denke ich mal dazu, platz zu sparen (mehr standardfunktionn = größere scripte (?)), und eröffnet der Community die möglichkeit benutzerdefinierte Funtkionen zu erstellen.

    wenn du zb. einen Internet explorer fernsteuern willst, kannst du dafür funktinoen wie
    _IENavigate() benutzen. und damit eben diese Funktionen klappen, musst die Datei, die die funktion definiert (IE.au3) erst eingebunden werden. Ansonsten weiß das Script ja nicht was mit dem Befehl _IENavigate zu tun ist.

  • Dein Programm Funktioniert trozdem auf allen rechnern, weil beim Kompilieren die ganzen Funktionen der Include-Datei in die Exe mit rein kommt.

    MfG xXTobi93Xx

  • wow, ihr seid einfach klasse. das ist echt verständlich rübergekommen und funktioniert. so ist ein einstieg in eine neue sprache wirklich schön 8o :thumbup: :thumbup:

    PS. wenn diese EXE nun meine aufgerufene EXE beendet, dann verschwindet auch der prozess aus dem task manager, wenn ich aber die aufgerufene anwendung vorher beende (mit der esc-taste) bleibt der prozess bestehen, gibt es dafür eine erklärung? kann man dies auch beeinflussen?

    das icon verschwindet auch unten rechts aus der taskleiste nicht, es sei denn ich geh mit rechtsklick drauf und beende es. da sammeln sich im laufe der ausführungen aber eine menge meiner icons, was läuft da schief?

    3 Mal editiert, zuletzt von ePole (15. Oktober 2009 um 17:52)