Tastatur Multiplexer [gelöst]
-
Ein Tastaturhook ist overkill.
Und das hier ist totaler Quatsch:
// das Putty Fenster const unsigned int h = 854928;Das Handle des Putty-Fensters ist doch nciht unveränderlich
-
Ich denke schon, daß er vorher das Handle per Hand bestimmt, oder?!
-
Hallo,
natürlich hab ich dafür noch eine Funktion. Die Variable steht da nur zum testen. Wie funktioniert es denn nun (auch ohne den Hook)?
-
Den Hook brauchst Du nur um irgendwelche Tatstatureingaben zu erhalten (von beliebigen Fenstern).
Die Fernsteuerung des Putty-Fensters hätte ich auch so versucht wie Du es gemacht hast (SendMessage). Da das anscheinend nicht geht kannst Du noch versuchen mit SendInput zu arbeiten, das überschreibt IMHO den Tastaturpuffer. Da kann keiner wiederstehen. Dazu must Du aber den Eingabefocus auf Putty setzen und wieder zurück, was sich störend auswirken könnte.
-
Hallo,
tja, das Fenster in den Vordergrund holen scheidet aus, weil ich ja mehrere Fenster ansprechen will, dann dürfte das extrem flimmern. Aber auch an Putty selbst kann es nicht liegen, da es ja z.B. auch mit Notepad nicht klappt. Irgendwie seltsam.
-
AlfredHitzkopf schrieb:
... da es ja z.B. auch mit Notepad nicht klappt.
Bist Du sicher, dass Du auch das richtige Fensterhandle hast ? Notepad z.B. besteht aus mehreren Fenstern. Nur eines von denen kann was mit Tastatureingaben anfangen.
-
Hallo,
das Fensterhandle ist gültig. Ich habs auch nochmal mit so einen Spy++-ähnlichen Tool überprüft. Trotzdem kein Erfolg. Ich hab auch schon gegooglet, aber bei solchen Themen findet man auch keinen Beispielcode.

-
Du brauchst das Fensterhandle des Textfeldes, das ist dir schon klar?
-
Hallo,
ja, es ist definitiv das richtige Fenster. Ich habs mit Notepad, Putty und dem Eingabefeld von Excel probiert, was definitiv ein eigenes Handle hat.
-
Oh, eben erst entdeckt.
wParam und lParam in SendMessage () sind vertauscht :BOOL CMyShellDlg::PreTranslateMessage(MSG* pMsg) { ... // ::SendMessage( (HWND)h, pMsg->message, pMsg->lParam, pMsg->wParam ); // so nicht ::SendMessage( (HWND)h, pMsg->message, pMsg->wParam, pMsg->lParam ); // aber so ... }
-
Hallo,
Tatsache. Das war die Lösung. Besten Dank!!!
-
Neiiiin *vor die Stirn hau* Gott sei dank haben wir hier einen Merker
