【问题标题】:Send Ctrl+Key to a 3rd Party Application将 Ctrl+Key 发送到第 3 方应用程序
【发布时间】:2011-12-08 10:09:32
【问题描述】:

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

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

【问题讨论】:

  • 你这里说的是WinAPI吗?相关标签会很好。

标签: delphi winapi delphi-xe keystroke


【解决方案1】:

这是一个示例,它显示了如何使用 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 年的。在网上的任何地方都找不到。

【讨论】:

  • 太棒了!非常感谢你。这在几秒钟内解决了我的问题。 ;)
【解决方案2】:

查看问题:Send keys to a twebbrowser? 那里有一个答案(Matt Handel),它链接到一篇文章,其中包含使用 SendKeys 单元并获取目标窗口句柄的示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-15
    • 2020-09-20
    • 2011-04-28
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    相关资源
    最近更新 更多