Senden Tastendruck zu einer anderen Anwendung mithilfe der WinAPI

Habe ich zur Kontrolle eine andere Anwendung, indem Sie Tastenanschläge, um es wie STRGS oder STRGSHIFTC oder STRGF.

Ich habe versucht, eine Menge Dinge, aber ich nicht bekommen kann es arbeiten. Also ich versuche, dieses Recht auf einen einfacheren Fall.

Diese erfolgreich sendet Hey auf dem Merkzettel:

procedure TForm1.Button1Click(Sender: TObject);
  var notepad, edit: HWND;
begin
  notepad := FindWindow('notepad', nil);
  edit := FindWindowEx(notepad, FindWindow('Edit', nil), nil, nil);

  SendMessage(edit, WM_CHAR, dword('H'), 0);
  SendMessage(edit, WM_CHAR, dword('e'), 0);
  SendMessage(edit, WM_CHAR, dword('y'), 0);
end;

- Und dies erfolgreich, sendet die F5 - Taste, um den Editor, und funktioniert auch mit F3 poping bis Sie das Dialogfeld Suchen.

notepad := FindWindow('notepad', nil);
PostMessage(notepad, WM_KEYDOWN, VK_F5, 0);
PostMessage(notepad, WM_KEYUP, VK_F5, 0);

Aber ich weiß nicht, warum SendMessage funktioniert nicht auf dem Beispiel oben.

Das beste was ich tun konnte, war so etwas wie dieses, die tut nichts.

notepad := FindWindow('notepad', nil);
PostMessage(notepad, WM_KEYDOWN, VK_CONTROL, 0);
PostMessage(notepad, WM_KEYDOWN, VkKeyScan('F'), 0);
PostMessage(notepad, WM_KEYUP, VkKeyScan('F'), 0);
PostMessage(notepad, WM_KEYUP, VK_CONTROL, 0);

Ich gefunden habe hier irgendwo eine Bibliothek, die irgendwie emulieren das VBScript senden-Taste Funktionen, aber gerade auf der Suche den code, scheint es nur broadcast-Tasten, um die aktuelle Anwendung oder alle Anwendungen, da es keine Handle-parameter.

InformationsquelleAutor Vitim.us | 2013-04-06

Schreibe einen Kommentar