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

时间:2010-07-22 19:43:54

标签: c# keyboard background mouse capture

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

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

2 个答案:

答案 0 :(得分:14)

看看这个图书馆http://globalmousekeyhook.codeplex.com/。 它是100%托管的c#代码,用于安装全局鼠标和键盘钩子。 它将低级钩子包装到常见的窗口中,形成键盘和鼠标事件。

答案 1 :(得分:10)

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

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