找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 1502|回复: 1

【VFB】钩子(VFB教程4-5)

[复制链接]

51

主题

31

回帖

648

积分

用户组: 大·技术宅

UID
3260
精华
7
威望
12 点
宅币
506 个
贡献
1 次
宅之契约
0 份
在线时间
23 小时
注册时间
2017-12-26
发表于 2018-2-27 11:09:08 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×

此处为VisualFreeBasic编程教程(从零开始学或VB进阶)的子章节部分,全部目录点链接。

  1. Common Shared  KeyboardHandle As HHOOK[/p]Function HookKeyboard(ByVal TID As Ulong ) As HHOOK  '定义键盘钩子
  2.      KeyboardHandle = SetWindowsHookEx(WH_KEYBOARD, @KeyboardCallback, App.hInstance, TID)
  3.     '1 钩子类型
  4.     '2 回调函数地址
  5.     '3 实例句柄
  6.     '4 线程ID  =0 钩全部
  7.     Function=KeyboardHandle
  8. End Function
  9. Common Shared MouseboardHandle As HHOOK
  10. Function HookMouBoard(ByVal TID As Ulong ) As HHOOK '定义鼠标钩子
  11. MouseboardHandle = SetWindowsHookEx(WH_MOUSE, @MouseboardCallback, App.hInstance, TID)

  12. '1 钩子类型
  13. '2 回调函数地址
  14. '3 实例句柄
  15. '4 线程ID  =0 钩全部
  16. Function=MouseboardHandle
  17. End Function
复制代码

启动窗口中放

  1. HookKeyboard 0 '拦截全部  HookKeyboard GetWindowThreadProcessId(窗口句柄,@i) 只拦截自己软件[/p]HookMouBoard 0 '拦截全部
复制代码

关闭窗口中放

  1. UnhookWindowsHookEx(KeyboardHandle)[/p]UnhookWindowsHookEx(MouseboardHandle)
复制代码

鼠标钩子返回

  1. Function MouseboardCallback(ByVal Code As Long, ByVal wParam As wParam, ByVal lParam As lParam) As Long[/p]    If Code=HC_ACTION Then
  2.    
  3.     End If
  4.    Function = CallNextHookEx(MouseboardHandle, Code, wParam, lParam)

  5. End Function
复制代码

键盘钩子返回

  1. Function KeyboardCallback(ByVal nCode As Long, ByVal wParam As WPARAM, ByVal lParam As LPARAM) As LRESULT[/p]  If nCode = HC_ACTION Then
  2.       Dim aa As String =Bin(lParam,32) '第1个 =0 按下, =1 释放
  3.   End If
  4.   Function = CallNextHookEx(KeyboardHandle, nCode, wParam, lParam)

  5. End Function
复制代码

其它钩子

  1. SetWindowsHookEx([/p]  idHook: Integer;   {钩子类型}
  2.   lpfn: TFNHookProc; {函数指针}
  3.   hmod: HINST;       {包含钩子函数的模块(EXE、DLL)句柄; 一般是 HInstance; 如果是当前线程这里可以是 0}
  4.   dwThreadId: DWORD  {关联的线程; 可用 GetCurrentThreadId 获取当前线程; 0 表示是系统级钩子}
  5. ): HHOOK;            {返回钩子的句柄; 0 表示失败}

  6. //钩子类型 idHook 选项:
  7. WH_MSGFILTER       = -1; {线程级; 截获用户与控件交互的消息}
  8. WH_JOURNALRECORD   = 0;  {系统级; 记录所有消息队列从消息队列送出的输入消息, 在消息从队列中清除时发生; 可用于宏记录}
  9. WH_JOURNALPLAYBACK = 1;  {系统级; 回放由 WH_JOURNALRECORD 记录的消息, 也就是将这些消息重新送入消息队列}
  10. WH_KEYBOARD        = 2;  {系统级或线程级; 截获键盘消息}
  11. WH_GETMESSAGE      = 3;  {系统级或线程级; 截获从消息队列送出的消息}
  12. WH_CALLWNDPROC     = 4;  {系统级或线程级; 截获发送到目标窗口的消息, 在 SendMessage 调用时发生}
  13. WH_CBT             = 5;  {系统级或线程级; 截获系统基本消息, 譬如: 窗口的创建、激活、关闭、最大最小化、移动等等}
  14. WH_SYSMSGFILTER    = 6;  {系统级; 截获系统范围内用户与控件交互的消息}
  15. WH_MOUSE           = 7;  {系统级或线程级; 截获鼠标消息}
  16. WH_HARDWARE        = 8;  {系统级或线程级; 截获非标准硬件(非鼠标、键盘)的消息}
  17. WH_DEBUG           = 9;  {系统级或线程级; 在其他钩子调用前调用, 用于调试钩子}
  18. WH_SHELL           = 10; {系统级或线程级; 截获发向外壳应用程序的消息}
  19. WH_FOREGROUNDIDLE  = 11; {系统级或线程级; 在程序前台线程空闲时调用}
  20. WH_CALLWNDPROCRET  = 12; {系统级或线程级; 截获目标窗口处理完毕的消息, 在 SendMessage 调用后发生}
复制代码
回复

使用道具 举报

1

主题

159

回帖

624

积分

用户组: 大·技术宅

UID
7535
精华
0
威望
0 点
宅币
464 个
贡献
0 次
宅之契约
0 份
在线时间
71 小时
注册时间
2021-10-16
发表于 2022-5-17 09:32:27 | 显示全部楼层

啥也不说了,感谢楼主分享哇!
回复 赞! 靠!

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-4-20 17:56 , Processed in 0.039720 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表