Wie kann man einen Tastendruck an ein anderes Fenster schicken?
Dazu benötigt man das Handle des Fensters und schickt an dieses dann zwei Nachrichten: WM_KeyDown und WM_KeyUp. Im folgenden Beispiel wird im Fenster "Form1" das Menü mit der Taste F10 aktiviert:
var W : HWnd; begin W := FindWindow(NIL,'Form1'); //"Form1" heißt hier das Fenster mit dem Menü if W <><> 0 then begin PostMessage(W, wm_KeyDown, vk_F10,0); //Simuliert F10 PostMessage(W, wm_KeyUp, vk_F10,0); end; end;
Eine andere Alternative ist die systemweite Versendung von Tastaturereignissen mit Keybd_Event. Mit dieser Funktion kann man auch Tastenkombinationen verschicken. Im folgenden Beispiel von Ralf Imhäuser ist es die Tastenkombination [Shift-Tab]:
Keybd_Event(vk_Shift,0,0,0); Keybd_Event(vk_Tab,0,0,0); Keybd_Event(vk_Tab,0,KEYEVENTF_KEYUP,0); Keybd_Event(vk_Shift,0,KEYEVENTF_KEYUP,0);
Delphi 1 | Delphi 2 | Delphi 3 | Delphi 4 |
nicht getestet | Version nicht betroffen | getestet |
siehe auch:
Wie bekomme ich Zugriff auf alle geöffneten Fenster?