C++的全局键盘HOOK屏蔽Win键

钩子编程(HOOK屏蔽所有按、鼠标及系统功能 (4) [钩子编程(HOOK屏蔽所有按鼠标及系统功能]上篇文章《钩子编程(HOOK) 安装系统全局钩子》已经详细的讲解了全局钩子的安装,下面我们增强一下钩子的功能,实现屏蔽所有按鼠标与系统功能。要实现这个功能,我们需要安装两个全局钩子,"鼠标钩子" 与 "低级键盘钩子"。鼠标钩子——实现屏蔽所有鼠标点击操作。低级键盘钩子——实现屏蔽所有键盘操作,包括屏蔽功能(ALT+F4,WIN,ALT+TAB,ALT+ESC,CTRL+ESC....)。注意:不包括CTRL+ 阅读详情

/**************************************************

** Project:DisabeldWinKeys

** File:Main.cpp

** Edition:v1.0.0 Demo

** Coder:KingsamChen [MDSA Group]

** Last Modify:2008-7-27

**************************************************/

// 学MFC的搞了一个酱紫的头文件
#include "stdfax.h"

// 全局Hook ID
HHOOK g_HookHwnd NULL ;

// WH_KEYBOARD_LL好像需要将实例句柄映射出去
// 具体自己看MSDN吧
HINSTANCE hInst;

LRESULT CALLBACK Wndproc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
LRESULT CALLBACK MyHookFun(int nCodeWPARAM wParamLPARAM lParam);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
  
WNDCLASSEX ws;  
// 定义结构 注意:这里用的是WNDCLASSEX

  
ws.cbSize sizeof(WNDCLASSEX);  // 返回结构大小 这个选项是Ex结构中新增的
  
ws.hbrBackground = (HBRUSH)COLOR_BACKGROUND;  // 背景颜色
  
ws.hCursor LoadCursor(NULL,IDC_ARROW);  // 鼠标指针样式
  
ws.hIcon LoadIcon(NULL,IDI_APPLICATION);  // 图标样式
  
ws.hIconSm LoadIcon(NULL,IDI_APPLICATION);  // 小图标  同样是Ex新增的
  
ws.hInstance hInstance;  // 当前实例句柄
  
ws.lpfnWndProc Wndproc;  // 回调函数指针
  
ws.lpszClassName "MyWindows";  // 窗口类名
  
ws.lpszMenuName NULL;   // 菜单名
  
ws.style CS_DBLCLKS;  // 接受双击窗体消息  //CS_HREDRAW | CS_VREDRAW;
  
ws.cbClsExtra 0;  // 无额外类存储
  
ws.cbWndExtra 0;  // 无额外窗体存储

  
if (!RegisterClassEx(&ws))  // Ex的结构必须要Ex的注册函数
  
{
    
return 0;  
// 注册失败直接返回0
  


  
hInst hInstance;

  
HWND hWnd;

  
hWnd CreateWindowEx(
    
0,  
// 扩展样式
    
"MyWindows",  // 类名,就是注册时的类名
    
"For Example",  // 标题栏文字
    
WS_OVERLAPPEDWINDOW,  // 样式 各属性均用默认值
    
CW_USEDEFAULT,  // 窗体X值
    
CW_USEDEFAULT,  // 窗体Y值
    
CW_USEDEFAULT,  // 窗体宽度
    
CW_USEDEFAULT,  // 窗体高度
    
NULL,  // 父窗口句柄
    
NULL,  // 功能菜单句柄
    
hInstance,  // 应用程序实例句柄
    
NULL  // 建立参数
    
);

  
if (!hWnd)
  {
    
return 0;  
// 失败返回
  
}
  
  
ShowWindow(hWndSW_SHOWNORMAL);  
// 显示窗体
  
UpdateWindow(hWnd);  //更新窗体

  
MSG msg;

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

  
return (int)msg.wParam;
}

// 主回调处理函数
LRESULT CALLBACK Wndproc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
  
// 以下两个仅用于测试Hook安装和卸载的返回值
  
BOOL bL NULL;
  
BOOL bLresult NULL;

  
switch(uMsg)
  {
    
case WM_DESTROY:
      
// 可以卸载钩子了
      // 参数就是SetWindowsHookEx返回的ID
      
bLresult UnhookWindowsHookEx(g_HookHwnd);
      
// ASSERT测试
      // 当exp为False,弹出错误框
      // 需要afx.h支持
      
ASSERT(bLresult);
      
PostQuitMessage(0);
      
break;

    
case WM_CREATE:
      
// 安装钩子
      
g_HookHwnd SetWindowsHookEx(WH_KEYBOARD_LLMyHookFunhInst0);
      
// 测试.同上
      
ASSERT(g_HookHwnd);
      
break;

    
case WM_LBUTTONDBLCLK:
      
MessageBox(hwnd,"Um...KingsamChen is a Fucker","Fuker",MB_OK);
      
break;

    
default:
      
return DefWindowProc(hwnd,uMsg,wParam,lParam);
      
break;
  }
  
  
return 0;
}

// 钩子子程
LRESULT CALLBACK MyHookFun(int nCodeWPARAM wParamLPARAM lParam)
{
  
// 这个Structure包含了键盘的信息
  /*typedef struct {
      DWORD vkCode;
      DWORD scanCode;
      DWORD flags;
      DWORD time;
      ULONG_PTR dwExtraInfo;
  } KBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;*/
  // 我们只需要那个vkCode
  
PKBDLLHOOKSTRUCT pVirKey = (PKBDLLHOOKSTRUCT)lParam;
  
  
// MSDN说了,nCode < 0的时候别处理
  
if (nCode >= 0)
  {
    
// 按键消息
    
switch(wParam
    {
      
case WM_KEYDOWN:
      
case WM_SYSKEYDOWN
      
case WM_KEYUP:
      
case WM_SYSKEYUP:
        
switch(pVirKey->vkCode
        {
          
case VK_LWIN:
          
case VK_RWIN:
            
return 1;  
// 吃掉消息
            
break;
        }
        
break;
    }    
  }

  
return CallNextHookEx(g_HookHwndnCodewParamlParam);
}

Electron应用如何用AutoHotkey屏蔽Win?5分钟搞定快捷禁用 本文详细介绍了如何在Electron应用中利用AutoHotkey快速禁用Win及其他系统快捷,提升用户体验。通过5分钟实现基础拦截功能,并结合Electron集成高级技巧,开发者可以轻松管理全局快捷,避免系统热干扰。适用于需要专业级快捷管控的中小型项目。 阅读详情

相关推荐

一个很简短的屏蔽(不是卸载)低级键盘钩子的程序及解释

今天遇到了一个程序,运行时自动

zgw071415的专栏 3040

Windows下利用HOOK和进程挂起实现的桌面锁屏

Windows下利用HOOK和进程挂起实现的桌面锁屏

C++:实现拦截输入法(附完整源码)

C++:实现拦截输入法(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 637

Windows操作系统下 使用c++ WIN32API禁用控制台最小化和关闭按钮

#include<Windows.h> //屏蔽控制台最小按钮和关闭按钮 HWND hwnd = GetConsoleWindow(); HMENU hmenu = GetSystemMenu(hwnd, false); RemoveMenu(hmenu, SC_CLOSE, MF_BYCOMMAND); ...

aizhangque5011的博客 1236

Windows】键盘禁用(屏蔽Win快捷

键盘Win极容易产生误触,网上一堆禁用方法都是改注册表,改360安全中心等等,操作繁琐且不容易改回去。经过测试并不需要那么麻烦,只需按下键盘上的 fn+win即可完成屏蔽win效果,再按一次即可恢复win(仅针对部分键盘有用)。

凡心所向,素履以往 7482

Windows hook “alt + tab”

最近项目需要,要动态开关win和alt + tab屏蔽这两个系统热需要全局hook底层键盘,捕获这两个系统热,相关示例代码如下: #define _WIN32_WINNT 0x0500 #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;windows.h&gt; HHOOK g_kb_hook ...

Keep Moving~ 1530

c语言hook键盘fn,钩子编程(HOOK屏蔽所有按鼠标及系统功能

作者 : 卿笃军上篇文章已经详细的讲解了全局钩子的安装,下面我们增强一下钩子的功能,实现屏蔽所有按鼠标与系统功能。要实现这个功能,我们需要安装两个全局钩子,"鼠标钩子" 与 "低级键盘钩子"。鼠标钩子:实现屏蔽所有鼠标点击操作。低级键盘钩子:实现屏蔽所有键盘操作,包括屏蔽功能(Alt+F4,Win,Alt+Tab, Alt+Esc,Ctrl+Esc....)注意:不包括Ctrl+Alt+De...

weixin_42515392的博客 1821

低级键盘钩子屏蔽Win、Alt+Tab的响应

如果你是基于Windows操作系统做系统集成的,你可能希望你的最终产品独占系统资源。你希望规范用户行为,比如你不希望用户通过按Ctrl+Alt+Del终止某个进程,或者按下Win弹出开始菜单, 或者按下Alt+Tab组合切换到别的应用程序。笔者已有相关一篇文章《Win2K/NT下屏蔽Ctrl+Alt+Del的响应》,介绍了如何通过GINA编程接口屏蔽Ctrl+Alt+Del的响应。作为续篇...

weixin_30522095的博客 330

vc禁用win、alt+tab

vc++屏蔽alt+tab和win系统热

lizudenku的专栏 4127

屏蔽Win及Ctrl+Esc的完整实现模块与例程

Windows操作系统中,热(如Win和Ctrl+Esc)为用户提供了快速访问系统功能的便捷方式。然而,在某些特定应用场景下,这些默认热可能造成干扰,甚至引发严重后果。例如,在全屏游戏、视频演示或代码编写过程中,意外按下Win会导致窗口切换或开始菜单弹出,从而中断当前任务。为了提升用户体验与操作稳定性,开发一个可屏蔽这些热的功能模块具有重要意义。本章将从Windows热的基本概念入手,分析其工作机制和潜在影响,为后续章节中钩子机制的引入与实现奠定理论基础。

weixin_35815766的博客 849

C# WinForm中屏蔽特殊功能的技术实现

本文还有配套的精品资源,点击获取 简介:在Windows系统中,Win、Ctrl+Alt+Del和Alt+F4等组合具有特定的功能,如打开“开始”菜单、启动任务管理器和关闭窗口。在开发C# WinForm应用程序时,出于安全或特定需求可能需要屏蔽这些。本文将介绍如何在C#中实现对这些特殊功能屏蔽和释放。其中,Win可以通过设置键盘钩子实现屏蔽,而Alt+F4可以...

weixin_35752122的博客 2388

钩子编程(HOOK屏蔽全部按、鼠标及系统功能 (4)

摘要:上篇文章《钩子编程(HOOK) 安装系统全局钩子》已经具体的解说了全局钩子的安装。本文将增强一下钩子的功能。实现屏蔽全部按鼠标与系统功能。要实现这个功能。须要安装两个全局钩子,"鼠标钩子" 与 "低级键盘钩子"。鼠标钩子——实现屏蔽全部鼠标点击操作。低级键盘钩子——...

weixin_30449453的博客 1151

c语言hook键盘fn,钩子编程(HOOK) 障蔽所有按鼠标及系统功能

钩子编程(HOOK) 屏蔽所有按鼠标及系统功能作者 : 卿笃军上篇文章已经详细的讲解了全局钩子的安装,下面我们增强一下钩子的功能,实现屏蔽所有按鼠标与系统功能。要实现这个功能,我们需要安装两个全局钩子,"鼠标钩子" 与 "低级键盘钩子"。鼠标钩子:实现屏蔽所有鼠标点击操作。低级键盘钩子:实现屏蔽所有键盘操作,包括屏蔽功能(Alt+F4,Win,Alt+Tab, Alt+Esc,Ctrl+...

weixin_30794381的博客 894

基于全局钩子实现鼠标键盘屏蔽与系统行为监控的技术实践

htmltable {th, td {th {pre {简介:全局钩子是Windows系统中用于拦截和处理系统级事件的重要技术,通过SetWindowsHookEx API实现对键盘和鼠标消息的监听与控制。本实践内容讲解如何使用全局钩子屏蔽鼠标键盘输入、记录可能导致电脑“死机”的操作行为,适用于系统监控、故障诊断等场景。同时强调其在安全与隐私方面的潜在风险,提醒开发者合法合规使用。

weixin_34413326的博客 1040

【超级鼠标键盘锁】之HOOK钩子屏蔽鼠标和Ctrl+Alt+Del、Win+L之外的按

最初,于2018年初步实现了windows7 64位系统下的鼠标键盘锁。然而,随着时光的流逝,微软已经放弃了对windows7系统的更新与维护,windows10系统已经不断地普及,是时候研究一下win10系统下的鼠标键盘锁了。 ①HOOK钩子dll实现 HOOK钩子动态链接库部分的实现,直接在VS中建立空工程,新建文件KeymsLockHook.cpp和KeymsLockHook.def。在KeymsLockHook.cpp中进行编程,如下 #include<Windows.h> #inclu

业精于勤,荒于嬉 1813

win7下全局低层键盘钩子实现

上一篇博客中介绍了一般全局键盘钩子,但是有几个缺点,一是代码不够简洁,需要两部分实现,二是效果不佳,对于64位进程无能为力。这篇博客介绍的低层键盘钩子,克服了以上缺点,在win7系统下做过测试,效果非常不错。 实现的原理是通过SetWindowsHookEx接口安装低层键盘钩子,低层键盘钩子由于是最底层的,系统的按消息会优先发到安装低层键盘钩子线程的消息队列中,让它获得优先处理消息的能力,通过

zjuman2007的博客 8440
上一篇: POSTTHREADMESSAGE
下一篇: 如何实现进程间的通信
ShenRui
博客等级 码龄19年 63粉丝 36原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值