SendMessage

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Chris213.

    SendMessage

    Ich versuche einen Text an eine Consolen anwendung zu schicken. Zum testen der Funktion, habe ich ein extra Programm erstellt, da hat die Funktion einwandfrei funktioniert, aber im eigentlichen Programm Versucht da Programm immer in den VB Editor die Befehle zu schreiben aber nicht in die Console. Weiß jemand wie ich das verhindern kann??

    VB.NET-Quellcode

    1. Shell(Application.StartupPath & "/telnet.exe IP PORT", AppWinStyle.NormalFocus)
    2. SendKeys.Send("sel PORT{ENTER}")
    3. SendKeys.Send("slogin USER PW{ENTER}")
    4. SendKeys.Send("msg 1234567890{Enter}")
    5. For Each Process In System.Diagnostics.Process.GetProcessesByName("telnet")
    6. Process.Kill()
    7. Next
    wuaaahh Shell...verwende lieber die Process und die ProcessStartInfo Klasse, somit hast du (bei Aktivierung von RedirectStandardInput/RedirectStandardoutput) die möglichkeit über einen StreamReader/writer mit der StandardInput und StandardOutput Eigenschaft in dem Prozesse(sobald gestartet) zu lesen und zu schreiben...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Dir IP und den Port übergebe ich mit Argumenten oder??

    VB.NET-Quellcode

    1. telnet.StartInfo.Arguments = "ip port"

    wenn ja, dann geht das nicht.

    Edit es geht doch, aber das mit dem streamwriter geht nicht, das Programm schreibt mir nichts rein.
    Hier mal mein Code

    VB.NET-Quellcode

    1. Dim telnet As New Process()
    2. telnet.StartInfo.Arguments = "ip port"
    3. telnet.StartInfo.FileName = Application.StartupPath & "/telnet.exe"
    4. telnet.StartInfo.UseShellExecute = False
    5. telnet.StartInfo.RedirectStandardInput = True
    6. telnet.StartInfo.RedirectStandardOutput = True
    7. telnet.Start()
    8. Dim sw As IO.StreamWriter = telnet.StandardInput
    9. Dim sr As IO.StreamReader = telnet.StandardOutput
    10. 'sw.AutoFlush = True
    11. sw.WriteLine("sel port")
    12. sw.WriteLine("slogin user pw")
    13. sw.WriteLine("msg 1234567890")
    14. sw.Close()
    15. MsgBox(sr.ReadToEnd)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Chris213“ ()

    Ok danke, da kommt aber dieser Fehler

    Quellcode

    1. Fehler bei WaitForInputIdle. Möglicherweise hat der Prozess keine grafische Schnittstelle.

    VB.NET-Quellcode

    1. telnet.StartInfo.UseShellExecute = False
    2. telnet.StartInfo.RedirectStandardInput = True
    3. telnet.StartInfo.RedirectStandardOutput = True
    4. telnet.Start()
    5. telnet.WaitForInputIdle(2000)