从 Winforms 应用程序发送全局击键/伪造全局热键

Posted

技术标签:

【中文标题】从 Winforms 应用程序发送全局击键/伪造全局热键【英文标题】:Send global keystroke / fake a global hotkey from a Winforms application 【发布时间】:2016-07-12 11:32:17 【问题描述】:

对于我当前的 winforms win7 项目,我需要模拟一些全局热键按下。

我尝试使用 SendMessage 将击键直接发送到热键中的程序拦截,但这不起作用。该程序在关注/直接发送给它们时似乎不处理传入的热键。

我如何发送模拟按键以便它们被识别为全局热键?

提前致谢!

编辑:我不想为我的应用程序设置热键,我想在另一个应用程序中从我的应用程序中触发它们。所以我的应用程序会在某处发送 Keystrokes,以供其他应用程序接收。不知道发到哪里,直接发不行

【问题讨论】:

看this question 啊,不,我需要将击键发送到另一个应用程序,而不是我自己的。 当然,不起作用,它在较低级别工作,您实际上必须模拟键输入。请改用 SendInput()。 当我手动按下它们时,程序无法识别全局热键。你认为 SendInput 会起作用吗? 【参考方案1】:

您可以使用 sendKeys:

SendKeys.Send("+^S");

这是 Ctrl+Shift+S

查看msdn:https://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.send(v=vs.110).aspx

【讨论】:

以上是关于从 Winforms 应用程序发送全局击键/伪造全局热键的主要内容,如果未能解决你的问题,请参考以下文章

Vbscript从批处理文件运行而不将击键发送到批处理文件

通过 telnet 发送击键

Python 将击键发送到非活动应用程序

我如何在一些全局击键上使用 Python 或 C++ 将一些文本粘贴到 linux 中的当前活动应用程序

PHP漏洞全解-跨网站请求伪造

通过 JNA 向隐藏窗口发送击键