SetWindowHookEx全局钩子将应用程序定义的挂钩过程安装到挂钩链中。您将安装挂钩过程来监视系统中某些类型的事件。这些事件与特定线程或与调用线程同一桌面中的所有线程相关联.

idHook要安装的挂钩过程的类型。此参数可以是以下值之一。

Value Meaning

WH_CALLWNDPROC

4

安装一个挂钩过程,在系统将消息发送到目标窗口过程之前监视消息。有关详细信息,请参阅CallWndProc挂钩过程。

WH_CALLWNDPROCRET

12

安装一个挂钩过程,在目标窗口过程处理消息后监视它们。有关详细信息,请参阅CallWndRetProc挂钩过程。

WH_CBT

5

安装接收对 CBT 应用程序有用的通知的挂钩过程。有关详细信息,请参阅CBTProc挂钩过程。

WH_DEBUG

9

安装可用于调试其他挂钩过程的挂钩过程。有关详细信息,请参阅DebugProc挂钩过程。

WH_FOREGROUNDIDLE

11

安装应用程序前台线程即将空闲时将调用的挂钩过程。此挂钩可用于在空闲时间执行低优先级任务。有关详细信息,请参阅前景IdleProc挂钩过程。

WH_GETMESSAGE

3

安装一个挂钩过程,用于监视发布到消息队列的消息。有关详细信息,请参阅GetMsgProc挂钩过程。

WH_JOURNALPLAYBACK

1

安装一个挂钩过程,该过程会发布以前由WH_JOURNALRECORD挂钩过程记录的消息。有关详细信息,请参阅日记本PlaybackProc挂钩程序。

WH_JOURNALRECORD

0

安装一个挂钩过程,用于记录发布到系统消息队列的输入消息。此挂钩可用于录制宏。有关详细信息,请参阅日记记录Proc挂钩过程。

WH_KEYBOARD

2

安装监视击键消息的挂钩过程。有关详细信息,请参阅键盘Proc挂钩过程。

WH_KEYBOARD_LL

13

安装监视低级键盘输入事件的挂钩过程。有关详细信息,请参阅低级别键盘Proc挂钩过程。

WH_MOUSE

7

安装监视鼠标消息的挂钩过程。有关详细信息,请参阅MouseProc挂钩过程。

WH_MOUSE_LL

14

安装监视低级鼠标输入事件的挂钩过程。有关详细信息,请参阅低级别鼠标Proc挂钩过程。

WH_MSGFILTER

-1

安装一个挂钩过程,用于监视对话框、消息框、菜单或滚动条中输入事件生成的消息。有关详细信息,请参阅MessageProc挂钩过程。

WH_SHELL

10

安装一个挂钩过程,该过程接收对 shell 应用程序有用的通知。有关详细信息,请参阅壳牌Proc挂钩过程。

WH_SYSMSGFILTER

6

安装一个挂钩过程,用于监视对话框、消息框、菜单或滚动条中输入事件生成的消息。挂钩过程监视与调用线程位于同一桌面中的所有应用程序的这些消息。有关详细信息,请参阅SysMsgProc挂钩过程。

CallNextHookEx将挂钩信息传递到当前挂钩链中的下一个挂钩过程。挂钩过程可以在处理挂钩信息之前或之后调用此函数。

LRESULT CallNextHookEx(HHOOK  hhk,//此参数将被忽略int    nCode,//转接代码传递到当前挂钩过程。下一个挂钩过程使用此代码来确定如何处理挂钩信息。WPARAM wParam,//wParam值传递给当前挂钩过程。此参数的含义取决于与当前挂钩链关联的挂钩类型。LPARAM lParam//lParam值传递给当前挂钩过程。此参数的含义取决于与当前挂钩链关联的挂钩类型
);

WH_KEYBOARD_LL 安装监视低级键盘输入事件的挂钩过程。

‎HOOKPROC‎‎类型定义指向此回调函数的指针。‎‎低级别键盘Proc‎‎是应用程序定义或库定义的函数名称的占位符

LRESULT CALLBACK LowLevelKeyboardProc(_In_ int    nCode,_In_ WPARAM wParam,_In_ LPARAM lParam
);

键盘钩子实现

HHOOK g_Hook;
LRESULT CALLBACK LowLevelKeyboardProc(INT nCode, WPARAM wParam, LPARAM lParam)
{KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *)lParam;BOOL bControlKeyDown = 0;switch (nCode){case HC_ACTION:{// 检查是否按了ctrl键 bControlKeyDown = GetAsyncKeyState (VK_CONTROL) >> ((sizeof(SHORT) * 8) - 1);//Disable CTRL+ESCif (pkbhs->vkCode == VK_ESCAPE && bControlKeyDown)return 1;if(wParam == WM_KEYUP)printf("%c", pkbhs->vkCode);break;}}return CallNextHookEx(g_Hook, nCode, wParam, lParam); //回调//return 1;
}int _tmain(int argc, _TCHAR* argv[])
{MSG msg;g_Hook=(HHOOK)SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)LowLevelKeyboardProc, GetModuleHandleW(0),0); while(GetMessageW(&msg,0,0,0))DispatchMessageW(&msg);return 0;
}

SetWindowsHookEx全局钩子相关推荐

  1. 用键盘全局钩子[Hook]监视多进程键盘操作

    用键盘全局钩子[Hook]监视多进程键盘操作 闲来无事,在WIN2K下用BCB5做了个键盘挂钩小程序,监视全局按键情况.Hook安放和回调函数放在一个单独DLL中,DLL原码如下: //------- ...

  2. Windows 全局钩子 Hook 详解

    监控程序的实现       我们发现一些木马或其他病毒程序常常会将我们的键盘或鼠标的操作消息记录下来然后再将它发到他们指定的地方以实现监听.这种功能其他是利用了全局钩子将鼠标或键盘消息进行了截取,从而 ...

  3. Delphi中使用全局钩子

    [转载] Delphi中使用全局钩子 Delphi中使用全局钩子 DLL代码: unit UnitDll; interface uses Windows; const BUFFER_SIZE = 16 ...

  4. 通过全局钩子发送自定义消息,实现进程通信

    利用钩子进行进程通信,在网上搜了许多帖子还是不明所以. 没办法自己摸索了4,5天终于测试好了代码.写下来,希望不要有人像我这样云里雾里的在这上面浪费时间. 钩子的加载 使用函数SetWindowsHo ...

  5. VC++ Hook截取鼠标点击窗口消息的问题!全局钩子

    VC++ Hook截取鼠标点击窗口消息的问题!全局钩子,高手进! 悬赏分:0 - 提问时间: 2010年05月19日 06时20分 我在做毕业设计,现在遇到一个问题,像求教高手: 我想实现如下功能,当 ...

  6. 使用调试钩子屏蔽全局钩子

    WH_DEBUG为调试钩子,用来给钩子函数除错.在系统调用系统中与其他Hook关联的Hook钩子例程之前,系统会调用WH_DEBUG Hook钩子例程.你可以使用这个Hook来决定是否允许系统调用与其 ...

  7. MFC 全局钩子dll注入监听键盘消息

    MFC自带的键盘监听功能只有焦点在MFC程序界面时才能监听键盘消息,要想在MFC程序界面外监听键盘消息,可以通过DLL注入使用全局钩子来监听.首先,通过Visual Studio生成全局钩子的动态库, ...

  8. 关于dll注入方式的学习(全局钩子注入)

    何为dll注入 DLL注入技术,一般来讲是向一个正在运行的进程插入/注入代码的过程.我们注入的代码以动态链接库(DLL)的形式存在.DLL文件在运行时将按需加载(类似于UNIX系统中的共享库(shar ...

  9. 全局钩子+正则表达式=后台自动获取扫描枪数据

    最近在给瑞表做一个global project,主要工作是在Warehouse模块中加入现场的称重以及Barcode Collection和Transmission. Barcode Scanner用 ...

  10. C#开源: 全局钩子+正则表达式=后台自动获取扫描枪数据

    最近在给瑞表做一个global project,主要工作是在Warehouse模块中加入现场的称重以及Barcode Collection和Transmission. Barcode Scanner用 ...

最新文章

  1. strip lstrip rstrip
  2. Java Web——JavaBean简介
  3. react的bind(this)
  4. jigsaw kaggle_使用Project Jigsaw的JDK 9 Early Access上的Eclipse IDE
  5. 泛型通用函数的一些特殊问题的解决方法
  6. 用php判断大月小月,php 获取月第一天和最后一天 | 学步园
  7. Hadoop中的Streaming(20)
  8. abrels.inc.php_abrels.inc.php
  9. 网页版Rstudio︱RStudio Server多人在线协作开发
  10. 【渝粤教育】 广东开放大学 21秋期末考试社会工作综合能力10411k2
  11. Python实现简单自动升级exe程序版本并自动运行
  12. 安川ga700变频器故障码集_安川变频器故障显示代码
  13. 怎样将图片转换成word文字
  14. U盘中病毒,文件夹变成exe文件
  15. 二手书店APP软件开发定制
  16. 信息安全复习四:置换密码乘积密码隐写术
  17. 2015届华为校园招聘机试题 C语言实现
  18. cmd端精简版扫雷= =(纯c)
  19. 杭州斯凯SDK教程_入门篇
  20. Python循环流程

热门文章

  1. 车牌识别项目(3)sobel算法边缘检测
  2. python中取绝对值简单方法总结
  3. C# gdal创建和读取tiff文件
  4. codebook码本算法
  5. 8.22 今日头条笔试
  6. win10录屏_截屏、录屏这种小事,Win10自带功能比微信QQ强 N 倍!
  7. python倒计时弹框提示带注释_注意时间用python制作倒计时提醒工具
  8. java 使用poi导出excel柱状图
  9. adguard home上网慢_老毛子/Padavan设置SmartDNS提速+AdGuard Home去广告之东施效颦
  10. XML编程(CRUD)