2009-06-24 3 views
1

Ich muss eine einfache Zeichenfolge an ein Befehlsfenster (Telnet) übergeben, von einer C# Winforms App ... gibt es eine einfache Möglichkeit, dies zu tun?C# schreibe eine einfache Zeichenfolge aus winforms -> cmd prompt telnet

habe ich versucht, die folgenden, aber es ist alles oder nichts, wenn standardinput--

die WinForms App doesnt haben Umleiten des CMD-Fenster zu starten ... das cmd Fenster bereits ausgeführt werden konnte also-- ich dachte vielleicht das wäre, wie man kommuniziert mit es--

es 1 oder 2 ist? 's ähnlich wie dies auf dem so ist, aber niemand wirklich genagelt ...

p/rufenden ist auch ok ...

bitte helfen!

Process p = new Process(); 
    StreamWriter sw; 
    //StreamReader sr; 
    //StreamReader err; 

    ProcessStartInfo psi = new ProcessStartInfo(@"cmd.exe", @"/C telnet 192.168.0.10"); 

    private void start 
    { 

     psi.WindowStyle = ProcessWindowStyle.Normal; 
     psi.RedirectStandardOutput = false; 
     psi.RedirectStandardInput = true; 

     psi.UseShellExecute = false; 
     psi.CreateNoWindow = false; 
     p.StartInfo = psi; 


     p.Start(); 

    } 

    private void write_to_cmd(object sender, EventArgs e) 
    { 

     psi.RedirectStandardInput = true; 
     sw = p.StandardInput; 
     ////sr = p.StandardOutput; 
     ////err = p.StandardError; 

     //sw.AutoFlush = true; 

     if (tbComm.Text != "") 
     sw.WriteLine(tbComm.Text); 


     ////sw.Close(); 

     ////textBox1.Text = sr.ReadToEnd(); 
     ////textBox1.Text += err.ReadToEnd(); 

     //p.WaitForExit(); 

    } 




} 

}

+1

Ich habe bisher eine praktikable Lösung ... einen globalen Hotkey setzen und SendKeys.Send (Code) verwenden; es ist win32 Anrufe jedoch ... –

+0

auch-- (mit keiner der Beispielcode oben) –

+0

mein sein sollten Sie nicht mit dotnet/winforms, was ist mit AutoIt – benPearce

Antwort

1

Ja, die Umleitung wird alles oder nichts sein. Möchten Sie, dass der Benutzer Informationen sowohl programmatisch als auch über die Eingabeaufforderung senden kann? Ich denke, dass Sie Standardeingabe in Telnet umleiten möchten, nicht die Eingabeaufforderung.

ProcessStartInfo ("telnet", "192.168.0.10");

Sie können eine Telnet-Sitzung auch nur mit System.Net.Sockets öffnen.