QtApplets-MyHook

​ 今天要演技的是在Qt下是使用Hook 钩子函数,主要就是项目需要在win平台下实现,需要屏蔽掉一些键盘组合按键,以防止用户杀死程序。


文章目录

  • QtApplets-MyHook
    • 1 新增注册表条目
    • 2 键盘钩子过程
    • 3 鼠标钩子过程
    • 4 安装钩子
    • 测试
    • ☞ 源码

关键字: 屏蔽键盘鼠标HOOK钩子

1 新增注册表条目

​ 这个是为了屏蔽Ctrl + Alt + Delete用的

/*** 新增注册表内容*/
#define TASKMANAGERSystem "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"
#define TASKMANAGERExplorer "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer"

2 键盘钩子过程

/*** @brief keyProc* @param nCode* @param wParam* @param lParam* @return* 键盘钩子过程*/
LRESULT CALLBACK keyProc(int nCode,WPARAM wParam,LPARAM lParam )
{//在WH_KEYBOARD_LL模式下lParam 是指向KBDLLHOOKSTRUCT类型地址KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *) lParam;//如果nCode等于HC_ACTION则处理该消息,如果小于0,则钩子子程就必须将该消息传递给 CallNextHookExif(nCode == HC_ACTION){if(pkbhs->vkCode == VK_ESCAPE && GetAsyncKeyState(VK_CONTROL)& 0x8000 && GetAsyncKeyState(VK_SHIFT)&0x8000)             //屏蔽 "Ctrl+Shift+Esc"return 1;if(pkbhs->vkCode == VK_ESCAPE && GetAsyncKeyState(VK_CONTROL) & 0x8000)                                                 //屏蔽 "Ctrl+Esc"return 1;if(pkbhs->vkCode == VK_TAB && pkbhs->flags & LLKHF_ALTDOWN)                                                             //屏蔽 "Alt+Tab"return 1;if(pkbhs->vkCode == VK_ESCAPE && pkbhs->flags &LLKHF_ALTDOWN)                                                           //屏蔽 "Alt+Esc"return 1;if(pkbhs->vkCode == VK_LWIN || pkbhs->vkCode == VK_RWIN)                                                                //屏蔽 "LWIN/RWIN"return 1;if(pkbhs->vkCode == VK_F4 && pkbhs->flags & LLKHF_ALTDOWN)                                                              //屏蔽 "Alt+F4"return 1;}return CallNextHookEx(mKeyHook, nCode, wParam, lParam);
}

3 鼠标钩子过程

/*** @brief mouseProc* @param nCode* @param wParam* @param lParam* @return* 鼠标钩子过程*/
LRESULT CALLBACK mouseProc(int nCode,WPARAM wParam,LPARAM lParam )
{Q_UNUSED(nCode);Q_UNUSED(wParam);Q_UNUSED(lParam);return 1;
}

4 安装钩子

/*** @brief MyHook::hook* @param flag* 安装钩子*/
void MyHook::hook(bool flag)
{if (flag){//这两个底层钩子,不要DLL就可以全局//底层键盘钩子mKeyHook =SetWindowsHookEx( WH_KEYBOARD_LL,keyProc,GetModuleHandle(NULL),0);//底层鼠标钩子//    mMouseHook =SetWindowsHookEx( WH_MOUSE_LL,mouseProc,GetModuleHandle(NULL),0);}else{UnhookWindowsHookEx(mKeyHook);//  UnhookWindowsHookEx(mMouseHook);}
}

测试

​ 这个需要在虚拟机下测试,程序需要以管理员运行。

​ 这是没有开启的状态

开启以后:

开启任务栏快捷键也做了屏蔽。没法展示,下载源码自己体验吧。

☞ 源码

源码链接:GitHub仓库自取

使用方法:☟☟☟


QtApplets-MyHook相关推荐

  1. webpack源码之tapable

    引言 去年3月的时候当时写了一篇webpack2-update之路,到今天webpack已经到了4.2,更新挺快的,功能也在不断的完善,webpack4特性之一就是零配置, webpack生命力真的很 ...

  2. 深度理解目标检测(MMdetection)-HOOK机制

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|计算机视觉联盟 最近做了一段时间的目标检测,不得不说检测这 ...

  3. 如何正确关闭游戏服务器

    一,如何正确的关闭游戏服务器 1,最简单粗爆的方法 在Linux系统上,使用ps -aux|grep java 可以查到所有运行的java程序的pid,即进程号,然后使用kill - 9 进程号,杀死 ...

  4. 使用钩子函数[3] - 建立一个全局的鼠标钩子

    分两步: 一.建立 DLL, 并在 DLL 实现钩子的设置.释放和钩子函数; 二.再建一个工程调用测试. 第一步: 做 DLL 先建立一个 DLL 工程, 自动初始的代码如下(去掉注释了): libr ...

  5. 好玩的deep dream(清晰版,pytorch完整代码)

      本文给出pytorch完整代码实现deep dream,加入了图像金字塔处理和高斯平滑处理,使生成图更加清晰美观.文中还讨论了各种因素对生成图的影响. 1, 完整代码   Deep dream图是 ...

  6. pytorch简单代码实现deep dream图(即CNN特征可视化 features visualization)

      本文给出完整代码实现CNN特征的可视化输入图像,也就是简单的deep dream图,有助于更好的理解CNN工作原理,并掌握用梯度上升法生成满足要求输入图像的技术.更清晰美观的deep dream图 ...

  7. 基于python3写的源码剖析_Python 极简插件系统 pluggy 源码剖析

    前言 本长文不适合手机端阅读,请酌情退出 公司架构组基于 pytest 自研了一套测试框架 sstest,目的是为了让业务组(也就是我在的组)更好的写单元测试,从而提高代码质量,单元测试的目的是为了回 ...

  8. frida的用法--Hook Java层类方法

    frida是一款方便并且易用的跨平台Hook工具,使用它不仅可以Hook Java写的应用程序,而且还可以Hook原生的应用程序. 1. 准备 frida分客户端环境和服务端环境.在客户端我们可以编写 ...

  9. C#环境下的钩子详解

    C#环境下的钩子详解 摘自网上供自己备查: http://www.csharpwin.com/csharpspace/2423.shtml 1. WINDOWS的消息机制 2. HOOK介绍 3. H ...

  10. 一篇文章带你领悟 Frida 的精髓(基于安卓8.1)

    转载(一篇文章带你领悟Frida的精髓(基于安卓8.1)):https://www.freebuf.com/articles/system/190565.html <Frida操作手册>: ...

最新文章

  1. POSIX消息队列信号通知
  2. python3下载教程-Python3 教程
  3. 菜鸟学Java(十一)——GET与POST
  4. 最简单的nginx教程 - 如何把一个web应用部署到nginx上
  5. 阿里云神龙团队拿下TPCx-BB排名第一的背后技术
  6. 冒泡排序和选择排序的JAVA程序
  7. Sysfs_linux设备底层模型
  8. deeplung代码实现主题讲解
  9. 饭局潜规则,吃饭时的最大忌讳,就是低头玩手机
  10. python语言的实验心得体会_爱的五种语言——“好妈妈”培训班家教情商课课堂纪实!...
  11. NMS(非极大值抑制)算法 -- 理论、代码
  12. 拓端tecdat|约会数据动态可视化分析:R语言使用ggplot和ganimate制作的动画图
  13. opencv-python的人脸识别系统
  14. Java小项目 屏幕自定义尺寸GIF生成器V1.0
  15. 部分拆解笔记本电脑(联想y580)
  16. 新浪微博从 Kafka 到 Pulsar 的演变
  17. c语言char类型怎么输出,c语言中char类型数组的输出问题--输出时为何需要符?...
  18. RemoveWGA升级了
  19. 让物联网为“中国制造”插上腾飞的翅膀
  20. Learning to rank 小结

热门文章

  1. 宇视摄像机——枪机后焦调节方法
  2. 元宇宙是个什么样的概念?
  3. 2023年南京理工大学控制理论考研上岸前辈备考经验指导
  4. linux下数据库启动和停止
  5. 廖雪峰python教程学习之习题解析
  6. 深圳国际会展中心希尔顿花园酒店亮相粤港澳大湾区核心地段
  7. 呼叫中心运营管理的七点建议
  8. 易创索讯-SEO网站优化获得销售的6种策略!
  9. 美国大学硕士研究生计算机专业几年,美国大学博士几年 - 美国南加州大学计算机研究生学几年...
  10. [读书笔记] 代码整洁之道(一)