资源简介
Qt实现全局钩子,拦截鼠标键盘消息,修改消息,在Qt 4.86上编译通过,适合学习,分享快乐,谢谢。

代码片段和文件信息
#include
#include
#include
HHOOK keyHook=NULL;
HHOOK mouseHook=NULL;
bool fire=false;
bool pressGun=false;
void unHook();
LRESULT CALLBACK keyProc(int nCodeWPARAM wParamLPARAM lParam )
{
KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *) lParam;
if(pkbhs->vkCode==VK_ESCAPE)
{
unHook();
}
// pkbhs->flags 说明
// 0 指定的键是否扩展的键,如功能键或数字键盘上的键。值为 1,如果键是一个扩展的密钥 ;否则,它是 0。
// 1-3 保留。
// 4 指定是否已注入该事件。值为 1,如果该事件被注射 ;否则,它是 0。
// 5 上下文代码。值为 1,如果按下 ALT 键 ;否则,它是 0。
// 6 保留。
// 7 过渡状态。如果它被释放,则值为 0,如果按下的键和 1。
bool bPress = (0x1 & (pkbhs->flags >> 7));
// printf(“KeyCode:%ld\nFlag :%ld\nPress :%ld\n“ pkbhs->vkCode pkbhs->flags bPress);
if(!bPress){
if(pkbhs->vkCode==VK_F12)
{
fire=true;
// keybd_event(65000);
}
}else{
if(pkbhs->vkCode==VK_F12)
{
fire=false;
// keybd_event(650KEYEVENTF_KEYUP0);
if(pressGun)
{
pressGun=false;
mouse_event (MOUSEEVENTF_LEFTUP | MOUSEEVENTF_MOVE 0 -30 0 0 );
}
}
}
return CallNextHookEx(keyHook nCode wParam lParam );
}
LRESULT CALLBACK mouseProc(int nCodeWPARAM wParamLPARAM lParam )
{
MSLLHOOKSTRUCT *pkbhs = (MSLLHOOKSTRUCT *) lParam;
MSLLHOOKSTRUCT *pkbhs_tmp=(MSLLHOOKSTRUCT *) lParam;
if (nCode< 0){
return CallNextHookEx(mouseHook nCode wParam lParam);
}
switch(wParam)
{
case WM_LBUTTONDOWN:
if(fire)
{
if(!pressGun){
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_MOVE 0 3 0 0 );
pressGun=true;
}else
{
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_MOVE 0 0 0 0 );
}
return 1;
}
break;
case WM_LBUTTONUP:
if(fire)
{
mouse_event (MOUSEEVENTF_LEFTUP | MOUSEEVENTF_MOVE 0 0 0 0 );
return 1;
}
break;
case WM_MOUSEMOVE:
// if(fire)
// {
// printf(“X: %ld\n“pkbhs->pt.y);
// pkbhs->pt.y+=100;
// printf(“X: %ld\n“pkbhs_tmp->pt.y);
// }
break;
}
return CallNextHookEx(mouseHook nCode wParam lParam );
}
void unHook()
{
UnhookWindowsHookEx(keyHook);
UnhookWindowsHookEx(mouseHook);
}
void setHook()
{
keyHook =SetWindowsHookEx( WH_KEYBOARD_LLkeyProcGetModuleHandle(NULL)0);
mouseHook =SetWindowsHookEx( WH_MOUSE_LLmouseProcGetModuleHandle(NULL)0);
}
int main(int argc char *argv[])
{
QCoreApplication a(argc argv);
printf(“Hello Qt Hook begin\n“);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 175847 2017-10-11 15:36 keyHook\debug\keyHook.exe
文件 105390 2017-10-11 15:36 keyHook\debug\main.o
文件 327 2017-10-11 10:14 keyHook\keyHook.pro
文件 18440 2017-10-12 08:14 keyHook\keyHook.pro.user
文件 17640 2014-06-03 23:19 keyHook\keyHook.pro.user.3.0-pre1
文件 3293 2017-10-11 15:36 keyHook\main.cpp
文件 6380 2017-10-11 15:36 keyHook\Makefile
文件 5008 2017-10-11 15:36 keyHook\Makefile.Debug
文件 5054 2017-10-11 15:36 keyHook\Makefile.Release
目录 0 2017-10-11 15:36 keyHook\debug
目录 0 2017-10-11 09:25 keyHook\release
目录 0 2017-10-12 08:14 keyHook
----------- --------- ---------- ----- ----
337379 12
相关资源
- 虚拟鼠标
-
Actionsc
ript 1.0实现能跟随鼠标运动的 - 多窗口后台鼠标连点器
- 键盘记录器7.1 绿色注册版(破解版)
- js鼠标经过选项卡
- Qt Creator opengl实现四元数鼠标控制轨迹
- [免费]msp430f149控制PS2键盘并用1602显示
- web js虚拟键盘(中英文切换)
- 会变色的鼠标指针,颜色随时在变哦
- CH454键盘与数码管显示程序
- 经典近乎绝迹的苹果变色鼠标指针
- VC 实现鼠标画矩形和绘制直线
- 键盘输入监控
- 8051单片机教程第二十六课:矩阵式键
- imx6q ch452驱动矩阵键盘扫描
- ch452串口键盘驱动程序
- 基于89C51计算机锁定加密键盘设计
- AresonMouseTestProgram可测鼠标回报率及
- 多窗口后台鼠标连点器.rar
- verilog 4×4矩阵键盘
- 虚拟数字键盘,自动跳转输入框,输
- 无电池近场通信 NFC 键盘设计方案
- 无电池近场通信 (NFC) 键盘设计方案
- 基于NFC无电池键盘设计方案
- 新贵GX1pro鼠标驱动 v1.0 官方版
- 彼诺GT9鼠标驱动 v1.0.1 最新版
- 狼途t8金钢狼鼠标驱动 官方版
- 酷冷至尊开阳星游戏鼠标驱动 v1.08 官
- 戴尔dell km636无线键盘鼠标套装驱动
- delphi 中鼠标移动事件
评论
共有 条评论