An Text der Telnet Ausgabe kommen?

  • Hallo
    Ich möchte mir einen eigenen Telnet Client basteln. Ich nutzte dafür den Orgnial Telnet Client von Windows.
    Über

    [autoit]


    WinActivate('telnet.exe')
    Send("Text" & '{ENTER}')

    [/autoit]


    kann ich einen Text an das Fenster senden. Jetzt zu meinem Problem. Ich würde jetzt gerne an den Text der Telnet-Ausgabe kommen. Im AUtoIt V3 Window Info stehen aber nur komische Zeichen bei Visible Text.
    Hat jemand eine Idee oder besser noch eine Lösung?

    Gruß Autoirrer ?(

    • Offizieller Beitrag

    Das hatte ich mal irgendwo entdeckt und ein bischen mit gespielt. Vielleicht kannst du es funktionierend ausbauen.

    Spoiler anzeigen
    [autoit]

    #include <Constants.au3>
    Opt('WinTitleMatchMode', 2)
    AutoItSetOption("WinDetectHiddenText", 1)
    $PID = Run('telnet', @SystemDir, @SW_HIDE, $STDIN_CHILD+$STDOUT_CHILD)
    ;~ $PID = Run(@ComSpec & " /c telnet", @SystemDir, @SW_HIDE, $STDIN_CHILD+$STDOUT_CHILD)
    ;~ ShellExecute("telnet", '', @SystemDir, '', @SW_HIDE)
    If Not ProcessExists('telnet.exe') Then Exit MsgBox(0, '', 'Tot')
    ;~ $arProcess = ProcessList('telnet.exe')
    ;~ If Not @error Then $PID2 = $arProcess[1][1]

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

    HotKeySet('!e', '_ende') ; Skript und Telnet beenden
    HotKeySet('!s', '_show') ; Telnet-Fenster zeigen
    HotKeySet('!h', '_hide') ; Telnet-Fenster verstecken
    HotKeySet('!w', '_write'); Befehl an Telnet-Fenster senden
    HotKeySet('!r', '_read') ; aus Telnet-Fenster lesen

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

    While 1
    Sleep(100)
    WEnd

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

    Func _ende()
    ProcessClose($PID)
    Exit
    EndFunc

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

    Func _show()
    WinSetState('telnet.exe', '', @SW_SHOW)
    EndFunc

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

    Func _hide()
    WinSetState('telnet.exe', '', @SW_HIDE)
    EndFunc

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

    Func _write()
    $strWrite = InputBox('', 'Befehl')
    StdinWrite($PID, $strWrite)
    StdinWrite($PID)
    ;~ WinActivate('telnet.exe')
    ;~ Send($strWrite & '{ENTER}')
    EndFunc

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

    Func _read()
    Local $txt = ''
    While 1
    $line = StdoutRead($PID)
    If @error Then ExitLoop
    $txt &= $line
    Wend

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

    ;~ $txt = WinGetText('telnet.exe', '')
    ConsoleWrite($txt & @CRLF)
    EndFunc

    [/autoit]