捕获表单之外的鼠标/键盘事件(应用程序在后台运行)

Posted

技术标签:

【中文标题】捕获表单之外的鼠标/键盘事件(应用程序在后台运行)【英文标题】:Capturing mouse/keyboard events outside of form (app running in background) 【发布时间】:2011-03-19 18:30:43 【问题描述】:

我有一个在后台运行的应用程序(最小化/任务托盘)。我需要能够检测鼠标活动(点击、移动)以及键盘活动。

考虑到我的窗口没有“聚焦”的限制,最好的方法是什么?

【问题讨论】:

你为什么要这么做? 为什么不重要。您不必在此处解释提问背后的动机。 【参考方案1】:

神奇的词是windows hooks。这些是通过对SetWindowsHookEx 的 p/invoke 调用创建的。您可以设置一个挂钩来监视键盘和鼠标事件等。通常,此类挂钩对于应用程序来说是本地的,但您也可以创建全局挂钩。 Microsoft KB shows 如何。

但是,请注意,并非所有类型的全局挂钩都可以在 .NET 中使用。特别是,您可以使用的只有两个:低级键盘和鼠标挂钩,称为WH_KEYBOARD_LLWH_MOUSE_LL。幸运的是,这些正是您所需要的。

【讨论】:

这是在 SO 上外部代码示例正常的时候吗? 可能。这是几个代码屏幕,所以我不想现在编辑它。 看起来该页面现在已经消失了-可以在betaarchive.com找到【参考方案2】:

看看这个库globalmousekeyhook。 安装全局鼠标和键盘挂钩是 100% 托管的 C# 代码。 它将低级挂钩包装到常见的 Windows 窗体键盘和鼠标事件中。

【讨论】:

以上是关于捕获表单之外的鼠标/键盘事件(应用程序在后台运行)的主要内容,如果未能解决你的问题,请参考以下文章

jQuery基础(鼠标事件,表单事件,键盘事件,自定义事件 篇)

jquery事件

AvaloniaUI:全局捕获鼠标按钮向上/向下

jQuery:jQuery的事件

基于OpenGL编写一个简易的2D渲染框架-07 鼠标事件和键盘事件

拦截(可能取消)页面的鼠标/键盘事件处理程序