我正在使用导出文件的第三方应用程序。应用程序使用热键( Ctrl + E )作为此功能的快捷方式。
如何将此组合键从我的Delphi XE应用程序发送到第三方应用程序?
答案 0 :(得分:5)
以下是一个示例,说明如何使用SendInput将 Ctrl + E 发送到前台应用程序:
var
Inputs: array [0..3] of TInput;
begin
// press
Inputs[0].Itype := INPUT_KEYBOARD;
Inputs[0].ki.wVk := VK_CONTROL;
Inputs[0].ki.dwFlags := 0;
Inputs[1].Itype := INPUT_KEYBOARD;
Inputs[1].ki.wVk := Ord('E');
Inputs[1].ki.dwFlags := 0;
// release
Inputs[2].Itype := INPUT_KEYBOARD;
Inputs[2].ki.wVk := Ord('E');
Inputs[2].ki.dwFlags := KEYEVENTF_KEYUP;
Inputs[3].Itype := INPUT_KEYBOARD;
Inputs[3].ki.wVk := VK_CONTROL;
Inputs[3].ki.dwFlags := KEYEVENTF_KEYUP;
SendInput(Length(Inputs), Inputs[0], SizeOf(TInput));
end;
我还使用Steve Seymour稍微修改过的SendKeys.pas版本。它有不同的键盘布局问题,从1999年开始。无法在网络中找到它。
答案 1 :(得分:3)
查看问题:Send keys to a twebbrowser? 那里有一个答案(Matt Handel)链接到一篇文章,其中包含使用SendKeys单元的示例,以及获取目标窗口的句柄。