C++禁用windows全局鼠标

发布时间 2023-11-07 11:27:36作者: ljn19961215

禁用全局鼠标的实现方式与禁用键盘类似,也是通过使用Windows API函数来创建钩子来截取鼠标消息,然后在钩子函数中阻止特定鼠标事件的执行。

下面是一个使用C++和Windows API来禁用全局鼠标的示例代码:

#include <iostream>
#include <Windows.h>

// 定义全局的钩子句柄
HHOOK mouseHook;

// 鼠标钩子回调函数
LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode >= 0)
{
// 检查是否为鼠标按键事件
if (wParam == WM_LBUTTONDOWN || wParam == WM_RBUTTONDOWN)
{
// 屏蔽鼠标按键事件,使其不再执行
return 1;
}
}

// 继续下一个钩子
return CallNextHookEx(mouseHook, nCode, wParam, lParam);
}

int main()
{
// 创建鼠标钩子
mouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseProc, NULL, 0);
if (mouseHook == NULL)
{
std::cout << "Failed to set mouse hook." << std::endl;
return -1;
}

// 进入消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

// 释放钩子
UnhookWindowsHookEx(mouseHook);

return 0;
}


在上述代码中,使用SetWindowsHookEx函数创建了一个鼠标钩子,MouseProc函数是钩子的回调函数,在该函数中拦截了鼠标按键事件并返回1来阻止其执行。最后,通过消息循环来处理消息,并在程序退出时释放钩子。

需要注意的是,由于该代码同样使用了系统级的钩子,需要以管理员权限运行才能正常工作。同时,在禁用全局鼠标之后,对系统使用会造成较大的影响,请谨慎使用。