win32api:暂时屏蔽鼠标点击?

0 投票
1 回答
2677 浏览
提问于 2025-04-16 12:18

有没有办法通过Windows的API来禁用普通的鼠标点击?我可以通过使用ClipCursor来限制鼠标点击的位置,除了某个特定的点以外,其他地方的点击都可以禁用,但点击的信号还是会被记录。

另外,我还想根据条件来禁用鼠标点击……比如说,我想让一个我无法控制的应用程序的窗口无法关闭,所以我希望发送到那个窗口的'X'按钮的点击信号不被处理。

1 个回答

3

你可以这样做,但这非常危险。下面是用C++实现的方法。

LRESULT __stdcall LowLevelMouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    if ((nCode < 0) || false)
    {
        result = CallNextHookEx(myLowLevelMouseHookHandle, nCode, wParam, lParam);
    }

    return result;
}

把上面例子中的 false 改成其他值,这样就可以重新启用键盘的功能。

顺便说一下,这个方法在处理键盘输入时也同样有效,甚至连Ctrl+Alt+Del组合键都无法使用。

如果你想让鼠标可以移动,但又想禁止点击,可以加一些 if ((wParam == WM_MOUSEMOVE) || (wParam == WM_NCMOUSEMOVE)) 的代码。

想了解更多信息,可以访问 http://msdn.microsoft.com/en-us/library/ms644986(VS.85).aspx

撰写回答