C++禁用windows全局鼠标

禁用全局鼠标的实现方式与禁用键盘类似,也是通过使用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来阻止其执行。最后,通过消息循环来处理消息,并在程序退出时释放钩子。

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

posted @   ljn19961215  阅读(276)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示