我正在使用导出文件的第 3 方应用程序。该应用程序使用热键 ( Ctrl+ E) 作为此功能的快捷方式。
如何将这个组合键从我的 Delphi XE 应用程序发送到第 3 方?
这是一个示例,它显示了如何使用SendInputCtrl将+发送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 年开始的。在网上的任何地方都找不到它。
请参阅问题:将密钥发送到 twebbrowser? 那里有一个答案(Matt Handel),它链接到一篇文章,其中包含使用 SendKeys 单元的示例,并获取目标窗口的句柄。