如何为 UI 之类的 "desktop" 安装全局鼠标钩子

how to Install global mouse Hook for certain UI like "desktop"

到目前为止的代码安装了一个钩子来检测鼠标 activity 但我想要的是过滤 activity 某些 UI 来检测点击发生的位置(在哪个 hwnd 上)正好是 'Desktop' 有办法吗?

这是我使用过的代码,来自微软网站 这里:How to set a Windows hook in Visual C# .NET

编辑:我发现他提供的代码不是全局的,所以对于全局钩子检查 link 在答案中,

首先关于钩子,我发现它不是全局的,我发现了开源的全局钩子 Here 所以每当鼠标单击发生时都会触发一个事件,并且我 运行 简单的回调代码检查桌面是否是活动控件

[DllImport("user32.dll")]
static extern int GetForegroundWindow();

[DllImport("user32.dll")]
static extern int GetClassName(int hWnd, StringBuilder lpClassName, int nMaxCount);

public void GetActiveWindow() {
const int maxChars = 256;
int handle = 0;
StringBuilder className = new StringBuilder(maxChars);

handle = GetForegroundWindow();

if (GetClassName(handle, className, maxChars) > 0) {
    string cName = className.ToString();
    if (cName == "Progman" || cName == "WorkerW") {
        // desktop is active
    } else {
        // desktop is not active
    }
}

}

完成!

特别感谢 Micky Duncaand 和 AJKenny84