【发布时间】:2015-07-13 01:50:15
【问题描述】:
到目前为止的代码安装了一个钩子来检测鼠标活动,但我想要的是过滤某些 UI 的活动或以准确检测点击发生的位置(在哪个 hwnd 上)' 桌面' 有办法吗?
这是我使用的代码,来自 Microsoft 网站 这里:How to set a Windows hook in Visual C# .NET
编辑:我发现他提供的代码不是全局的,所以对于答案中的全局钩子检查链接,,,
【问题讨论】:
-
您几乎必须先了解 HWND,然后在全局回调期间进行自己的过滤。使用
GetDesktopWindow ()提前获取桌面的HWND -
谢谢@Micky 的回复我已经考虑过使用'GetDesktioWindow()' 来获取HWND,但是在全局回调期间我可以在哪里或如何过滤它?“首先我尝试使用'WndProc()',但我发现它只接收传递给我正在使用的 HWND 的消息,而与桌面无关“
-
不用担心,按照示例安装一个 WH_MOUSE,HWND 将通过您的
MouseHook()回调的 LPARAM 位于MOUSEHOOKSTRUCT.hwnd中 -
我发现这个钩子不是全局的,只能在使用它的表单中工作,这对我来说太令人沮丧了,我应该编辑这个问题吗?我必须从零开始调用 WH_MOUSE_LL 而不是 WH_MOUSE
-
也许是.NET的限制?由你决定。我总是从 c/c++ 做全局钩子。祝你好运
标签: c# hook mouse-hook