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?