【发布时间】:2011-12-08 10:09:32
【问题描述】:
我正在使用导出文件的第 3 方应用程序。应用程序使用热键 (Ctrl + E) 作为此功能的快捷方式。
如何将这个组合键从我的 Delphi XE 应用程序发送到第 3 方?
【问题讨论】:
-
你这里说的是WinAPI吗?相关标签会很好。
标签: delphi winapi delphi-xe keystroke
我正在使用导出文件的第 3 方应用程序。应用程序使用热键 (Ctrl + E) 作为此功能的快捷方式。
如何将这个组合键从我的 Delphi XE 应用程序发送到第 3 方?
【问题讨论】:
标签: delphi winapi delphi-xe keystroke
这是一个示例,它显示了如何使用 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 年的。在网上的任何地方都找不到。
【讨论】:
查看问题:Send keys to a twebbrowser? 那里有一个答案(Matt Handel),它链接到一篇文章,其中包含使用 SendKeys 单元并获取目标窗口句柄的示例。
【讨论】: