我希望能够检测到用户何时在我的程序之外按下 F10 或 Ctrl+F10,并且在收到按键后,它会将文本发送到他们当前选择的任何内容(例如文本框)。如何以最简单的方式实现这一点?
问问题
5666 次
3 回答
3
使用RegisterHotkey而不是键盘挂钩来获取全局热键。
在几乎相同的问题上查看我的一个较早的答案:当应用程序没有聚焦时听一个键
于 2011-03-07T10:17:35.953 回答
1
这里的第一个问题是F10密钥已经是 Windows 应用程序的保留密钥。当用户按下它时,活动应用程序会选择其菜单栏中的第一个菜单。这为用户提供了一种无需使用鼠标即可激活菜单的便捷方式。您提议在全球范围内劫持该功能是不体谅和不恰当的。我建议选择一个不同的快捷键,最好是一个还没有标准含义的快捷键。
然后,您必须安装一个低级键盘挂钩(.NET 应用程序支持的唯一挂钩类型)。这是捕获应用程序外部发生的键盘事件的唯一方法。由于您想检测应用程序不在前台时发生的按键操作,因此您需要一个全局挂钩。
Stephen Toub 的博客上有一个很好的示例。它恰好是用 C# 编写的,但转换为 VB.NET 很简单。如果您更喜欢可以简单地添加到项目中的现有代码的完整基础,您可以尝试这个示例,但请注意它包含许多您不需要的附加功能。
于 2011-03-07T07:36:32.993 回答
0
您可以在按键事件中检查:
if not e.control and e.keycode = keys.F10 then
<Statements>
elseif e.keycode = keys.F10 then
<Statements>
end if
于 2011-08-23T07:17:41.313 回答