Premetto che non conoscevo putty, ho letto adesso su wikipedia...
Tempo fa, per imparare ad usare processi e delegati ho creato un programma che "voleva" essere un' interfaccia grafica a cmd.exe...
Il sunto, con il codice alla fine, è una Form con due TextBox, un Button, un BackgroundWorker:
Tbox_input
Tbox_output
Button_invio
BackgroundWorker1
Tbox_input è la TextBox dove scrivere il comando DOS, Button_invio è il Button...per eseguirlo.
Tbox_output è una TextBox Multiline in cui viene scritto l' output di CMD.
CMD.EXE viene eseguito dal BackgroundWorker per non bloccare la Form durante l' esecuzione dei comandi, dove leggi "delegato" serve per non avere problemi di "cross thread exception".
Quindi, scrivi il comando su Tbox_input (ad esempio: ping google.it) e clicca sul Button_invio, sulla Tbox_output verranno scritte le stesse informazioni che leggeresti su CMD.
Vedi tu se riesci a fare lo stesso con putty...
Il codice:
Imports System.Threading
Imports System.IO
Public Class Form1
Dim WithEvents pr As New Process()
Delegate Sub pr_delegato(ByVal riga As String)
Dim myStreamWriter As StreamWriter
Private Sub Form1_Load() Handles MyBase.Load
BackgroundWorker1.RunWorkerAsync()
End Sub
Private Sub BackgroundWorker1_DoWork() _
Handles BackgroundWorker1.DoWork
Dim args As New ProcessStartInfo("cmd.exe")
With args
.RedirectStandardOutput = True
.RedirectStandardInput = True
.UseShellExecute = False
.CreateNoWindow = True
End With
pr = Process.Start(args)
myStreamWriter = pr.StandardInput
pr.BeginOutputReadLine()
myStreamWriter.WriteLine("cd c:\")
End Sub
Private Sub scrivi(ByVal riga As String)
Tbox_output.AppendText(riga)
End Sub
Public Sub scrivi_delegato(ByVal riga As String)
Dim a As New pr_delegato(AddressOf scrivi)
Invoke(a, New Object() {riga & vbCrLf})
End Sub
Private Sub pr_outline(sendingProcess As Object, _
outLine As DataReceivedEventArgs) _
Handles pr.OutputDataReceived
If Not String.IsNullOrEmpty(outLine.Data) Then
scrivi_delegato(outLine.Data)
End If
End Sub
Private Sub Button_invio_Click() Handles Button_invio.Click
myStreamWriter.WriteLine(Tbox_input.Text)
End Sub
End Class