博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 键盘钩子
阅读量:5791 次
发布时间:2019-06-18

本文共 1576 字,大约阅读时间需要 5 分钟。

#include 
#pragma comment(lib, "User32.lib")HHOOK g_hKeyboard = NULL;#pragma data_seg("MySec")#pragma data_seg()#pragma comment(linker,"/section:MySec,RWS")HHOOK g_Hook;//此处为钩子过程函数,与方案一中的钩子过程函数相同,不再重复,其中函数名改为KeyboardHookProcLRESULT WINAPI KeyboardHookProc(int nCode,WPARAM wParam,LPARAM lParam){ LPKBDLLHOOKSTRUCT pKB = (LPKBDLLHOOKSTRUCT)lParam; BOOL bKeyToShield = FALSE; if(nCode == HC_ACTION){ switch(wParam){ case WM_KEYDOWN: case WM_SYSKEYDOWN: case WM_KEYUP: case WM_SYSKEYUP:{ bKeyToShield = (pKB->vkCode == VK_LWIN) || (pKB->vkCode == VK_RWIN)|| /* win键*/ (pKB->vkCode == VK_ESCAPE) || (pKB->vkCode == VK_RETURN) || /* esc键*/ ((pKB->vkCode == VK_TAB) && ((pKB->flags & LLKHF_ALTDOWN) != 0))|| /* alt+tab*/ ((pKB->vkCode == VK_ESCAPE) && ((pKB->flags & LLKHF_ALTDOWN) != 0))|| /* alt+esc*/ ((pKB->vkCode == VK_ESCAPE) && ((GetKeyState(VK_CONTROL) & 0x8000) != 0)); /* ctrl+tab*/ break; } default: break; } } return(bKeyToShield?TRUE:CallNextHookEx(g_Hook,nCode,wParam,lParam));}void SetHook()//安装钩子{ g_hKeyboard = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardHookProc, GetModuleHandle(L"KeyboardHook"), 0); }void UnHook() //卸载钩子{ UnhookWindowsHookEx(g_hKeyboard);}/******************************************dll END******************************************/

 

转载于:https://www.cnblogs.com/qq76211822/p/5110851.html

你可能感兴趣的文章
mysql 连接出错 'mysqladmin flush-hosts'
查看>>
mysql性能优化
查看>>
Linux常用命令(十一)计划任务管理
查看>>
.NET 4.0 WinForm无法引用System.Web.dll的解决方法
查看>>
thinkpad x240s ubuntu下wifi断网bug解决方案
查看>>
点击空白处隐藏菜单
查看>>
三种方法实现Javascript控制ScrollBar(滚动条)
查看>>
了解--Android Bootstrap模板
查看>>
oracle 一些应用技巧
查看>>
我的北漂感悟录,程序员你是否也曾有过?!
查看>>
常用缓存淘汰算法
查看>>
MapReduce on Hbase
查看>>
结构型模式之七:代理模式
查看>>
Python CGI编写web程序-加法器
查看>>
精通Java设计模式从初见到相爱之原型设计模式(4)
查看>>
天狗农业网把农业科网络科技结合起来
查看>>
HTML5 Canvas效率如何?
查看>>
8080端口运行nginx,通过端口映射8080 NAT 80
查看>>
MultipartEntity与UrlEncodedFormEntity区别
查看>>
mac 查看.a
查看>>