首页 > 系统相关 >C++禁用windows全局鼠标

C++禁用windows全局鼠标

时间:2023-11-07 11:35:47浏览次数:52  
标签:鼠标 windows 钩子 C++ mouseHook 禁用 全局 函数

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

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

标签:鼠标,windows,钩子,C++,mouseHook,禁用,全局,函数
From: https://www.cnblogs.com/ljna/p/17814634.html

相关文章

  • windows常用dos命令
    cmd打开方式:开始+系统+命令提示符win+r组合键打开终端,输入cmd打开控制台在任意文件夹下,按住shift加鼠标右键在资源管理器的地址栏前面加上cmd路径常用dos命令:1.切换盘符D:2.查看该目录下的所有文件dir3.切换目录cd(changedirectory)比如cdlhsb切换到名为lhsb......
  • C#开发的软件在Windows7中出现对路径的访问被拒绝异常
    C#开发的软件在Windows7中出现对路径的访问被拒绝异常在VS2008/VS2010下,右键项目=>属性=>安全性=>直接勾选“启用ClickOnce安全设置”即可解决问题。 创建文件夹和文件时,选择其他盘,比如:D,E,F.不要选择创建到C盘。......
  • C++禁用windows全局键盘
    1.使用WindowsAPI函数调用来拦截键盘消息。2.创建一个键盘钩子来截取键盘消息。3.在钩子函数中,检测到特定按键事件时,阻止该事件执行。4.最终在程序退出时释放钩子。下面是一个使用C++和WindowsAPI来禁用Windows系统键盘的示例代码:#include<iostream>#include<Windows.h......
  • Windows ObjectType Hook 之 SecurityProcedure
    1、背景  ObjectTypeHook是基于ObjectType的一种深入的Hook,比起常用的SSDTHook更为深入。  有关ObjectType的分析见文章《Windows驱动开发学习记录-ObjectTypeHook之ObjectType结构相关分析》。  这里进行的Hook为其中之一的SecurityProcedure。文章实......
  • VMWare中Red Hat Enterprise Linux 6与Windows XP共享文件夹/共享目录
    虚拟机linux与widows主机的进行文件共享1.安装vmtoolsforlinux注意:如果Linux中已经装载有ISO文件,要先Eject。选择linux虚拟机--右键--installVMwaretools...选择linux虚拟机--右键–settings >CD-ROM>Edit>USEISOImage-选择vmware安装目录中linux.iso(注:如......
  • 怎样取消Windows 2003 server 意外关机提示
    怎样取消Windows2003server意外关机提示取消系统关机原因方法:(1)打开“开始”--“运行”命令,打开一个运行对话框,在其中输入“gpedit.msc”命令,来弹出组策略编辑界面。按回车后打开组策略编辑器。(2)在该界面中,用鼠标左键双击“计算机配置”文件夹----“管理模板”文件夹----“......
  • c/c++数据类型
    intunsignedintcharunsignedcharlonglonglongunsignedlongshortunsignedshortfloatdouble各种指针类型枚举类型struct结构类型union联合类型boolstring类 比如把数据类型比做盒子,定义类型就是存仓什么东西,假如int型把盒子分成4份......
  • C++模板显示指定类型时使用引用遇到的问题
    1.问题这里我想让模板函数接收int和char类型的参数,并进行相加,显示指定参数类型为int。第一个调用理论上会自动将char类型强转成int类型,后进行相加;第二个调用理论上会自动将int类型强转成char类型,后进行相加;但是报错Nomatchingfunctionforcallto'add_ab'template<typena......
  • QEMU for windows
    QEMUDownloadQEMU-QEMUQEMUcanbeinstalledusingMSYS2also.MSYS2usespacmantomanagepackages.First,followtheMSYS2installationprocedure.Thenupdatethepackageswithpacman-Syucommand.Nowchoosethepropercommandforyoursystemasfol......
  • windows环境charles过期处理方法
    首先进行reset删除原来的证书 输入mmc->文件>添加删除管理单元->找到相关证书进行删除  重复安装证书,手机再次下载安装新证书即可......