Einer Konsolenanwendung eine Taste schicken

  • Ich habe ein Konsolenprogramm, das ich mit AutoIt steuern möchte. dieses Programm erwartet einen druck auf ESCAPE, um sauber zu beenden.
    Send ("{ESC}") funktioniert, aber dafür muss es ja sowohl visible als auch aktive sein.
    Wie in der Hilfe steht, kalppt "ControlSend" nicht, ein StdinWrite($pid, "{ESC}") ebenfalls nicht.

    kann mir irgendjemand helfen?

    danke

  • Klappt das denn:

    [autoit]


    $exe = "test15.exe"
    $pid = ProcessExists("test15.exe")
    If $pid Then
    $wl = WinList()
    $handle = 0
    $i = 0
    Do
    If StringInStr($wl[$i][0], $exe) > 0 Then
    $handle = $wl[$i][1]
    WinActivate($handle)
    WinWaitActive($handle)
    Sleep(100)
    StdinWrite($pid, "{ESC}")
    ExitLoop
    EndIf
    $i += 1
    Until $i = $wl[0][0]
    EndIf
    Exit

    [/autoit]

    Wobei du für test15.exe deine Anwendung eintragen musst!

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • das funktioniert leider nichtmal, wenn das Fenster sichtbar ist....

    wobei du das auch sehr umständlcih machst - wozu das Fenster Visible machen, wenn du auf den stdin schreibst?
    Wozu die pid aus der winList ermitteln, wenn der Run-Befehl sie doch zurück gibt?

    habe das ganze nochmal versucht, reduziert auf

    StdinWrite($pid, "{ESC}")

    aber auch das wirkt nicht.....

    (PS: ausserdem muss der stdin doch beim Run initialisiert werden, oder?)