C#中的全局键钩

Posted

技术标签:

【中文标题】C#中的全局键钩【英文标题】:Global Keyhook in C# 【发布时间】:2013-03-24 11:30:55 【问题描述】:

我想制作一个新的应用程序,我可以通过外部 GUI 的按键进行控制。如果按键被按下,首先应该有一个文本字段发生变化。最后我想在 keyPress 上启动一个计时器。我用谷歌搜索并访问了 Stack Overflow,但没有发现任何东西可以帮助我真正解决我的问题。

我在 Stack Overflow 上找到了 post 并尝试了代码。但我只是在控制台中获取密钥,不知道如何在失焦的 GUI 上请求它。

任何帮助都将不胜感激。

【问题讨论】:

【参考方案1】:

虽然这只是一个链接,但我过去成功使用了代码项目文章“Processing Global Mouse and Keyboard Hooks in C#”中的库。

您可以注册您的事件接收器以接收有关多个事件的通知,例如:

var actHook = new UserActivityHook();

// hang on events

actHook.OnMouseActivity += new MouseEventHandler(MouseMoved);
actHook.KeyDown += new KeyEventHandler(MyKeyDown);
actHook.KeyPress += new KeyPressEventHandler(MyKeyPress);
actHook.KeyUp += new KeyEventHandler(MyKeyUp);

在我看来相当容易使用。

更新:

该项目也可通过a newer version from the same author, over at CodePlex 获得。

【讨论】:

谢谢,我看起来很有希望。我现在去看看。 我将它缩减为像 this 这样的 KeyDown 侦听器,但它给了我一个错误。 'System.ComponentModel.Win32Exception' 类型的未处理异常 @GeroK 尝试检查完整的异常(包括堆栈跟踪、错误消息和内部异常)。 codeproject.com 糟糕的一件事是完全缺乏审查。这个项目特别糟糕,任何人都有太多的方法可以打断他们的腿​​。请不要推荐它。 什么特别不好?我真的使用成功了。

以上是关于C#中的全局键钩的主要内容,如果未能解决你的问题,请参考以下文章

全局变量 v C# 中的设置

C#中的全局程序集缓存定义

如何从 C# 中的 C++ dll 中的全局变量从函数中获取返回数组?

C# windows 应用程序中的全局级错误处理

C#基础——全局静态类中的静态类变量的设置

C# Windows 窗体应用程序中的全局变量方法? (是公共静态类 GlobalData 最好的)