将Ctrl + Key发送到第三方应用程序

时间:2011-12-08 10:09:32

标签: delphi winapi delphi-xe keystroke

我正在使用导出文件的第三方应用程序。应用程序使用热键( Ctrl + E )作为此功能的快捷方式。

如何将此组合键从我的Delphi XE应用程序发送到第三方应用程序?

2 个答案:

答案 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单元的示例,以及获取目标窗口的句柄。