Hallo,
da in unserem Betrieb viel über Putty gearbeitet wird wollte ich gerne eine Art Makrofunktion erstellen. Bisher habe ich 2 Möglichkeiten versucht aber beide funktionieren nicht so wie gewünscht.
if (m_Process.Responding)
{
System.Windows.Forms.SendKeys.SendWait("ABC");
}
Hier wird der String leider vollkommen falsch übergeben z.B AAAABBBCCCC.
Wenn ich die Win32 API nutze kommt leider garkeine Ausgabe.
SendMessage(m_AppWin, (uint)WM.SETTEXT, 0, new StringBuilder("ABC"));
PostMessage zum senden des Schließenbefehls geht komischerweise. Meine Vermutung ist das ich nicht an den richtigen Prozess von Putty sende.
Hat damit zufaellig mal einer Erfahrungen gemacht? Es muss aufjedenfall irgendwie funktionieren da PuttyCM auch eine Makrofunktion bietet. Leider ist die Seite seit mehreren Wochen/Monaten nicht zu erreichen.
Ich kann dir nicht konkret weiterhelfen, aber ich denke, bei SendMessage verwendest du das falsche Handle. Du brauchst ein Handle von dem Eingabecontrol, nicht von dem Prozess oder dem Hauptfenster.
Was soll am Ende rauskommen?
http://www.tamirgal.com/blog/page/SharpSSH.aspx ... ist etwas langwierig sich einzuarbeiten - anschließend habe ich mir aber einen kleinen "Explorer" gebastelt um darüber grafisch arbeiten zu können
hand, mogel
Verzeihung das ich jetzt erst antworte, hatte Urlaub 😃
Ich kann dir nicht konkret weiterhelfen, aber ich denke, bei SendMessage verwendest du das falsche Handle. Du brauchst ein Handle von dem Eingabecontrol, nicht von dem Prozess oder dem Hauptfenster.
Leider komme ich nicht an das richtige Handle. Habe versucht es mit Spy++ raus zufinden aber anscheinend ist Putty etwas eigenartig aufgebaut.
SharpSSH hatte ich mir auch angeschaut wollte es allerdings nicht nutzen da es seit 2007 keine Änderungen mehr gab.
Hallo bl4ckY,
es gibt schon ein paar Anwendungen, die keine Windows-Controls verwenden, sondern die Oberfläche selber zeichnen. Da kommt man dann mit dem Windows-API an die Grenzen, weil die "Control" dann gar keinen Handel habe. Ich würde mich aber wundern, wenn Putty zu dieser Art von Anwendungen gehört.
herbivore
Also es scheint wirklich so zu sein das Putty das Input Fenster selber zeichnet. Man kommt also über die Win32 Funktionen nicht dran. Einzige Möglichkeit die bleibt ist SendKeys. Das scheint auch zu funktionieren zumindest bei anderen Programmen. Bei mir sendet er die Sachen falsch. Ich werde mal weiter rum probieren und wenn ich eine Lösung habe hier rein schreiben 😃
Lösung: SendKeys.SendWait Method
Scheint ein Problem der verschiedenen Windows Versionen zu sein.
<appSettings>
<add key="SendKeys" value="SendInput"/>
</appSettings>
in die App.config löst zumindest bei mir das Problem.