我有一个在后台运行的应用程序(最小化/任务托盘)。我需要能够检测鼠标活动(点击,移动)以及键盘活动。
考虑到我的窗口没有"焦点",那么最好的方法是什么?
我有一个在后台运行的应用程序(最小化/任务托盘)。我需要能够检测鼠标活动(点击,移动)以及键盘活动。
考虑到我的窗口没有"焦点",那么最好的方法是什么?
看一下这个库 globalmousekeyhook。 它是用 100% 托管的 c# 代码来安装全局鼠标和键盘钩子。 它将底层钩子封装成常见的窗体键盘和鼠标事件。
关键词是窗口钩子。这些通过对 SetWindowsHookEx
进行 p/Invoke 调用创建。您可以设置挂钩来监视键盘和鼠标事件等。通常,此类挂钩仅限于应用程序,但您也可以创建全局挂钩。Microsoft KB 展示了如何实现。
但是,请注意并非所有类型的全局挂钩都可以从 .NET 中使用。特别地,只有两种您可以使用:低级别键盘和鼠标挂钩,称为WH_KEYBOARD_LL
和WH_MOUSE_LL
。幸运的是,这正是您所需要的。