m0_52463047
搬砖工卢卡斯
采纳率0%
2021-03-09 10:06

能否用C语言写一个让鼠标失效的函数?

56
已结题

我需要一个函数能够在我写的函数刚开始禁用且只禁用鼠标(所有点击无效)(windows10),我的函数结束时恢复鼠标。若有人能直接给我这个函数我愿意采纳他的答案。我已经尝试过使用hook但是没用。

  • 点赞
  • 收藏
  • 复制链接分享

10条回答

  • yueyuedog 蒟蒻一枚 1月前
  • wlwdecs_dn fb_cwzy 1月前

    我可把exe文件发你进行试用,有意请私信

    点赞 评论 复制链接分享
  • wlwdecs_dn fb_cwzy 1月前

    哈哈,前不久刚写过博客,得用全局钩子(360得加入白名单,否则会被拦截),详细请见我的博客(目前收费)“超级鼠标键盘锁”

    除了鼠标被屏蔽外,还可以屏蔽键盘(包括Ctrl+Alt+Del、Win+L等系统键)

    链接:https://blog.csdn.net/wlwdecs_dn/article/details/114081337

    整个工程的下载地址:https://blog.csdn.net/wlwdecs_dn/article/details/114107420

    购买了专栏,专栏里所有文章都可见,工程代码也可下载

    望采纳

    点赞 1 评论 复制链接分享
  • peng450 peng450 1月前

    实在不行就把它移到不存在的位置,等函数结束再移回来原来的位置

    点赞 评论 复制链接分享
  • peng450 peng450 1月前

    我记得有隐藏鼠标的接口提供啊?

    点赞 评论 复制链接分享
  • hfhbutn 四海一叶秋 1月前

    win10的话,pnputil命令支持禁用启用设备。

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\mouclass\Enum注册表右侧,count记录了鼠标设备数量,0、1、2、3这些的值是实例ID。

    禁用这些设备,命令是:

     pnputil /disable-device "实例ID"

    启用是:

     pnputil /enable-device "实例ID"

    如“ pnputil /disable-device "USB\VID_045E&PID_00DB\6&870CE29&0&1"。

    代码可以参考博文:https://blog.csdn.net/CJ_WORLD/article/details/102629149

    点赞 评论 复制链接分享
  • bill20100829 歇歇 1月前

    禁用

    #include<stdio.h>
    int main()
    {
     system("sc config Mouclass start= disabled");
     return 0;
    }

    开启

    #include<stdio.h>
    int main()
    {
     system("sc config Mouclass start= enabled");
     return 0;
    }

    点赞 评论 复制链接分享
  • bill20100829 歇歇 1月前

    禁用

    #include<stdio.h>
    int main()
    {
     system("reg add HKEY_LOCAL_MACHINE\\system\\CurrentControlSet\\Services\\Mouclass /v Start /t REG_DWORD /d 4 /f");
     return 0;
    }

    启用

    #include<stdio.h>
    int main()
    {
     system("reg add HKEY_LOCAL_MACHINE\\system\\CurrentControlSet\\Services\\Mouclass /v Start /t REG_DWORD /d 3 /f");
     return 0;
    }

    点赞 评论 复制链接分享
  • soar3033 soar3033 1月前
    #define _WIN32_WINNT 0x0500   // PKBDLLHOOKSTRUCT
    #include <windows.h>
    
    //设置g_hWnd共享,禁止dll拷贝
    #pragma data_seg("MyHook")
    HWND g_hWnd = NULL;             //窗口句柄
    #pragma data_seg()
    #pragma comment(linker,"/section:MyHook,RWS")
    
    HHOOK g_hMouse = NULL;          //鼠标钩子句柄
    
    //低级钩子
    LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
    {
    	bool isClick = false;
    	PKBDLLHOOKSTRUCT LowKey = NULL;   //该结构体包括底层键盘输入事件的信息
    	
    	if (nCode == HC_ACTION)      //HC_ACTION  表示有消息
    	{
    		LowKey = (PKBDLLHOOKSTRUCT)lParam;
    		switch (wParam)
    		{
            case WM_KEYDOWN:
    			{
    				isClick = 1;
    				if (LowKey->vkCode == VK_F8) // 后门
    				{
    				
    					SendMessage(g_hWnd, WM_CLOSE, 0, 0);   //发送关闭主窗口消息
    					UnhookWindowsHookEx(g_hMouse);         //卸载低级鼠标钩子
    				}
    				break;
    			}
            case WM_SYSKEYDOWN:
            case WM_KEYUP:
            case WM_SYSKEYUP:
    			{              // 屏蔽Win
    				isClick = (LowKey->vkCode == VK_LWIN) || (LowKey->vkCode == VK_RWIN) ||  
    					//屏蔽Alt+F4
    					((LowKey->vkCode == VK_F4) && ((LowKey->flags & LLKHF_ALTDOWN) != 0)) ||
    					// 屏蔽Alt+Tab
    					((LowKey->vkCode == VK_TAB) && ((LowKey->flags & LLKHF_ALTDOWN) != 0)) ||
    					// 屏蔽Alt+Esc
    					((LowKey->vkCode == VK_ESCAPE) && ((LowKey->flags & LLKHF_ALTDOWN) != 0)) ||
    					// 屏蔽Ctrl+Esc
    					((LowKey->vkCode == VK_ESCAPE) && ((GetKeyState(VK_CONTROL) & 0x8000) != 0));
    				break;
    			}
            default:
                break;
    		}
    	}
    	if (isClick)
    	{
    		return 1;
    	}
    	return CallNextHookEx(g_hlowKeyHook,nCode,wParam,lParam);  //传给下一个钩子
    }
    
    //屏蔽全部鼠标消息
    LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
    {
    	return 1;
    }
    
    //安装钩子
    void SetHook(HWND hWnd)  //为了操作窗口,我们将主窗口的句柄传进去
    {
    	g_hWnd = hWnd;       //将主窗口句柄传给全局句柄,然后便于在上面的钩子过程中使用
    
    	//安装鼠标钩子
    	g_hlowKeyHook = SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle("GHookDll"),0);
    }
    点赞 评论 复制链接分享
  • bosaidongmomo bosaidongmomo 1月前

    可以阿

    https://blog.csdn.net/F_hawk189/article/details/112094875

    但是你给的云盘文件Debug跑不了....

    抱歉我只会vs全家桶,cmake接触过一点,makefile就直接没接触了...

    点赞 评论 复制链接分享

为你推荐