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 nCode, WPARAM wParam, LPARAM 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(hWnd, SW_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_LL, MyHookFun, hInst, 0);
      
// 测试.同上
      
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 nCode, WPARAM wParam, LPARAM 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_HookHwnd, nCode, wParam, lParam);
}

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

相关推荐

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

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

zgw071415的专栏 3045

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

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

aizhangque5011的博客 1245

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

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

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

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

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

凡心所向,素履以往 7509

【超级鼠标键盘锁】之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

业精于勤,荒于嬉 1822

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

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

weixin_35815766的博客 855

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~ 1553

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

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

weixin_35752122的博客 2398

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

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

weixin_42515392的博客 1824

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

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

weixin_34413326的博客 1057

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

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

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

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

weixin_30522095的博客 330

ChatGPT Plus完整开通指南:从账号注册到稳定使用全流程

自然语言处理(NLP)技术通过深度学习模型实现对人类语言的理解与生成,其核心原理是基于Transformer架构的大规模预训练。GPT-4作为当前最先进的生成式AI模型,在代码编写、文档分析等场景展现出显著的技术价值。在实际应用中,稳定的网络环境和合规的支付方式是确保AI助手持续服务的关键因素。针对ChatGPT Plus的开通,需要系统性地解决账号验证、虚拟信用卡支付等工程实践问题,才能实现工作流的高效整合。

weixin_34239592的博客 426

vc禁用win键、alt+tab键

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

lizudenku的专栏 4129

避坑指南:SAP CO模块维护成本控制范围的5个常见错误及解决方法

本文深入剖析了SAP CO模块中维护成本控制范围时最易犯的5个常见错误,包括货币参数配置不当、标准层次结构缺失、财政年度变式不一致、功能激活遗漏及集成参数设置错误。重点针对事务码OKKP的配置,提供了详细的排查步骤与实战解决方案,帮助顾问有效规避陷阱,确保成本核算体系稳定运行。

stone的博客 232

在x86机器上运行jailhouse

jailhouse jaihouse提供了一个demo ,https://github.com/siemens/jailhouse-images可以用于编译一整套可用的demo。 适用于多个平台。编译过程主要参考https://blog.csdn.net/weixin_39541632/article/details/110422345 此demo可以生成多个平台所用的操作系统image。 ...

闲人的专栏 3004

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

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

weixin_30449453的博客 1154

逆向实战:基于内存态匿名段分析的 DexProtector 检测绕过策略

本文深入探讨了针对DexProtector加固方案的Frida检测绕过策略。通过分析运行时动态加载到匿名内存段的核心检测逻辑,提出了一套基于内存态分析、定位并转储匿名可执行段,进而通过精准Hook与“等式化替换”等技术实现稳定绕过的实战方法。该方法不仅适用于DexProtector,也对采用类似内存隐藏技术的加固方案具有参考价值。

ik678901的博客 512

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

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

weixin_30794381的博客 897

告别双系统!用PhyFusion在麒麟V10上无缝融合Win11,文件互传、GPU加速全搞定

本文详细介绍了在飞腾D3000平台上使用PhyFusion实现麒麟V10与Win11无缝融合的解决方案。通过视觉无界、数据互通和性能无损的三大突破,PhyFusion显著提升了跨系统工作效率,支持GPU加速和文件互传,是国产化平台的革命性工具。

weixin_28707365的博客 1009

扣子(Coze)搭建智能体完整实战指南 —— 从零基础入门到写小说及其他需求扩展开发

随着大语言模型进入应用爆发期,我们正在经历从“寻找提示词”向“构建智能体”的范式转移。扣子(Coze)作为字节跳动推出的一站式AI智能体开发与运营平台,极大地降低了AI应用开发的门槛,让非技术人员也能快速搭建具备感知、决策、行动能力的智能体。 本文将手把手带你从零开始,在扣子平台上搭建一个功能完备的**小说创作智能体**,并基于此展示如何将同一套架构扩展到其他需求场景。无论你是写作爱好者、内容创作者,还是希望用AI赋能日常工作的职场人士,这套完整的技术方案都将帮助你快速上手。

huanghm88的专栏 636

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

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

zjuman2007的博客 8448

Android Audio录音——AudioRecord回声消除(九)

在语音通话或录音场景中,回声(Acoustic Echo)通常是指说话的声音从对方的扬声器播放出来,又被对方的麦克风拾取,然后有被传回来,导致我们听到了自己延迟了一段时间的重复声音。

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值