钩子(hook),指用api来提前拦截并处理windows消息的手段。

全局钩子是系统钩子的一种,当指定的一些消息被系统中任何应用程序所处理时,这个钩子就被调用。

ALT+CTRL+DELETE是微软的操作系统直接处理的按键事件。除此之外,其它的按键都可以由我们来自行控制。

下面,来看一下键盘钩子是如何实现的。

//声明用到的钩子

HHOOK keyHook = NULL;

//先声明函数,实现在下面
LRESULT CALLBACK keyProc(int nCode,WPARAM wParam,LPARAM lParam );

//初始化钩子,关闭键盘事件(除了ALT+CTRL+DELETE)
void initHook()
{
    keyHook = SetWindowsHookEx(WH_KEYBOARD_LL, keyProc, GetModuleHandle(NULL), 0);
}

//销毁钩子
void unHook()
{
    UnhookWindowsHookEx(keyHook);
}

//钩子用的函数
LRESULT CALLBACK keyProc(int nCode,WPARAM wParam,LPARAM lParam )
{
    //在WH_KEYBOARD_LL模式下lParam 是指向KBDLLHOOKSTRUCT类型地址
    KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *) lParam;
    //如果nCode等于HC_ACTION则处理该消息,如果小于0,则钩子子程就必须将该消息传递给 CallNextHookEx
    if(nCode == HC_ACTION){
        if(pkbhs->vkCode == VK_ESCAPE && GetAsyncKeyState(VK_CONTROL)& 0x8000 && GetAsyncKeyState(VK_SHIFT)&0x8000){
                    qDebug() << "Ctrl+Shift+Esc";
        }else if(pkbhs->vkCode == VK_ESCAPE && GetAsyncKeyState(VK_CONTROL) & 0x8000){
            qDebug() << "Ctrl+Esc";
        }else if(pkbhs->vkCode == VK_TAB && pkbhs->flags & LLKHF_ALTDOWN){
            qDebug() << "Alt+Tab";
        }else if(pkbhs->vkCode == VK_ESCAPE && pkbhs->flags &LLKHF_ALTDOWN){
            qDebug() << "Alt+Esc";
        }else if(pkbhs->vkCode == VK_LWIN || pkbhs->vkCode == VK_RWIN){
            qDebug() << "LWIN/RWIN";
        }else if(pkbhs->vkCode == VK_F4 && pkbhs->flags & LLKHF_ALTDOWN){
            qDebug() << "Alt+F4";
        }
        if(pkbhs->vkCode == VK_F1 && pkbhs->flags &LLKHF_ALTDOWN) {
            unHook();
            qDebug() << "Alt+F1 back room";
        }

return 1;//返回1表示截取消息不再传递,返回0表示不作处理,消息继续传递
    }
    return CallNextHookEx(keyHook, nCode, wParam, lParam);
}

屏蔽Windows按键(除却ALT+CTRL+DELETE)相关推荐

  1. electorn+AutoHotkey屏蔽windows按键

    说明:屏蔽windows快捷键的方式有多种,可以写c++插件引入到程序中,当然如何对c++了解到不够深入,成本可能比较高,另外就是采用autoHotKey,windows 平台下的热键脚本语言程序,低 ...

  2. java屏蔽功能键_Java屏蔽Windows按键代码

    用java 能实现这功能吗,iHookKeyboard (屏蔽键盘...,想用java 实现. 不行的,JAVA没有钩子,可以考虑通过JNI调用C. 如何用JAVA做禁用键盘,鼠标,任务管理器等任人都 ...

  3. 屏蔽Windows系统输入法快捷键Ctrl+Space

    快速解决 新建文件1.reg 写入以下内容 Windows Registry Editor Version 5.00[HKEY_CURRENT_USER\Control Panel\Input Met ...

  4. 利用底层键盘钩子屏蔽任意按键

    很多人都知道,如果想在系统范围内屏蔽键盘上的任意按键需要使用全局键盘钩子,然而像win键这样"倔强"的按键又不是普通的键盘钩子就能搞定的.这里我提供一种利用底层键盘钩子屏蔽任意按键 ...

  5. 修改注册表屏蔽windows系统快捷键的方法

    1.屏蔽鼠标右键 HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer 修改内容: 在 ...

  6. 如何使Windows 10的Alt + Tab应用程序切换器更加透明

    By default, the Alt+Tab app switcher in Windows is nearly opaque. If you'd like to see a little more ...

  7. Android4.3 屏蔽HOME按键返回桌面详解(源码环境下)

    点击打开链接 首先声明我是做系统开发的(高通平台),所以下面介绍的方法并不适合应用开发者. 最经有个需求要屏蔽HOME按键返回桌面并且实现自己的功能,发现以前的方式报错用不了,上网搜索了一下,发现都是 ...

  8. Atom.io设置ctrl+delete

    一般常见的text editor,在文本前面的空白处按下ctrl+delete,只是删除空白符到单词前面停下,但是Atom.io的默认设置,把空白符后遇到的第一个单词也删掉了.改配置方法是在keyma ...

  9. redhat5.8 alt+ctrl+f1 黑屏

    /*********************************************************************** redhat5.8 alt+ctrl+f1 黑屏* 说 ...

最新文章

  1. windows mobile开发循序渐进(4)移动应用程序的数据存储之本地数据存储第二篇
  2. unity热更新json_Unity3D热更新 CSHotFix入门教程之HelloWorld
  3. Dubbo系统间通信
  4. RocketMQ的Producer详解之分布式事务消息(原理分析)
  5. Flink部署、使用、原理简介
  6. Django ORM models操作
  7. 江苏卫视舞蹈演员机器人_百度机器人踢馆江苏卫视《芝麻开门》
  8. springboot毕设项目自驾旅游网站的设计与实现gah85(java+VUE+Mybatis+Maven+Mysql)
  9. Web前端期末大作业--中国港珠澳大桥网页设计(HTML+CSS+JavaScript)实现
  10. Linux centOS 修改欢迎界面
  11. html 滚动字幕如何设置,如何制作滚动字幕 视频画面加滚动字幕,自己设置滚动字幕的显示时间(滚动次数)...
  12. 云原生监控报警可视化
  13. KendoUI模板引擎 - 概述
  14. 阿里云ACE高级工程师的备考经验分享
  15. 做网站九年拥有了梦寐以求的域名
  16. pytorch 优化器
  17. 如何使用SolidWorks软件导出URDF机器人模型文件 — 00 给SolidWorks软件安装 sw_urdf_exporte
  18. dokuwiki中文linux,Linux 下面 Dokuwiki 安装 - Dokuwiki 中文教程
  19. 啊哈--算法 开启树之旅
  20. #统计分析基础-数据统计与图表

热门文章

  1. 高新计算机考试1-8视频,最新版计算机高新考试ps第1单元1 8.doc
  2. 2016逗比的猿生活
  3. Win2K无盘终端网组建全攻略(1)(转)
  4. js实现在线AES加密解密(支持ECB,CBC,并输出Base64或Hex)
  5. 火影忍者服务器维护时间,火影忍者ol停机联服 本次维护预计时间为9.5小时
  6. 《缠中说禅108课》72:本 ID 已有课程的再梳理
  7. 想做好app测试,只需要做好这些!
  8. 即时通讯:XMPP项目实践-微聊
  9. 职称计算机 只做模拟题,2017职称计算机考试Dreamweaver模拟练习题
  10. 传奇gm命令怎么用_全新强大的传奇GM后台命令脚本