Tastaturbefehle an ein bestimmtes Handle senden.
-
Gibt es die Möglichkeit, Tastaturbefehle an ein bestimmtes Fensterhandle zu senden?
-
Nein. Wenn man es richtig machen will geht nur SendInput. Aber das ist nicht applikationsbezogen.
-
Ja ich vermute auch das es nicht geht da Windows Tastendrücke automatisch an das aktive Fenster schickt
. Aber mit keybd_event kanst du Tasten drücke simulieren und an das aktive Fenster schicken. z.B.:
#include <iostream> #include <Windows.h> enum tasten { A = 0x41, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z }; int main() { while(true) { if( GetAsyncKeyState(VK_SPACE) & 0x80000 ) { keybd_event( VK_BACK, 0, KEYEVENTF_EXTENDEDKEY | 0, 0 ); keybd_event( H, 0, KEYEVENTF_EXTENDEDKEY | 0, 0 ); keybd_event( A, 0, KEYEVENTF_EXTENDEDKEY | 0, 0 ); keybd_event( L, 0, KEYEVENTF_EXTENDEDKEY | 0, 0 ); keybd_event( VK_SPACE, 0, KEYEVENTF_EXTENDEDKEY | 0, 0 ); keybd_event( VK_BACK, 0, KEYEVENTF_EXTENDEDKEY | 0, 0 ); keybd_event( L, 0, KEYEVENTF_EXTENDEDKEY | 0, 0 ); keybd_event( O, 0, KEYEVENTF_EXTENDEDKEY | 0, 0 ); return 0; } } }
Aber das wusstest du sicher schon...
-
Antwort: Nein
Aber schau mal hier: (Die Lösung ist NICHT 100% zuverlässig. Bei mir funktionierte es aber das heisst noch lange nicht das es IMMER und auch wirklich ZUVERLÄSSIG funktioniert. Ich kann ja z.b. auch wild in den Virtual address space einer Anwendung irgendwelche Bytes schreiben es kann sein das es 10 mal gut geht und das die Zielanwendung aber beim 11 ten mal crasht ... Vielleicht geht es auch nur 1 mal oder gar nicht gut.
)
Von daher viel Glück.^^
Video Tutorial – Send Keys To An Inactive Window – Windows Messages
http://www.vivid-abstractions.net/category/programming/tutorials/http://www.vivid-abstractions.net/wp-content/plugins/download-monitor/download.php?id=28
@ cppfan
keybd_event ist veraltet.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646304(v=vs.85).aspxMSDN schrieb:
Note This function has been superseded. Use SendInput instead.
Verwenden lieber SendInput:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646310(v=vs.85).aspx
-
Danke ich werde es beherzigen. Gut wenn hier alle mit denken und helfen, Danke.