找回密码
 注册

QQ登录

只需一步,快速开始

智能终端设备维修查询系统注册会员邮箱认证须知!
查看: 4956|回复: 3

[VB问题已回复] VB实现全局钩子

[复制链接]

该用户从未签到

楚天哲 发表于 2010-6-3 13:04:00 | 显示全部楼层 |阅读模式

欢迎您注册加入!这里有您将更精采!

您需要 登录 才可以下载或查看,没有账号?注册

×
这是我写的一个小程序。我的目的:是在启动我的程序后,我在启动其他的程序,比如打开记事本,我在记事本里输入字母A同时我也希望通过A键来触发我编写的那个程序的按钮事件。我再网上查的说需要安装全局钩子来时截取键盘信息。来实现这个功能。但是我一直做不出来,希望各位答谢给看一下。如果给写个例子就再好不过了,在这先谢谢了

全局钩子的实现.rar

1.91 KB, 下载次数: 345

  • TA的每日心情

    2025-6-23 21:25
  • 签到天数: 126 天

    [LV.7]常住居民III

    admin 发表于 2010-6-3 16:35:38 | 显示全部楼层
    呵呵,实现了,用VB就是累人……
    Form窗口代码:

    1. Private Sub Command1_Click()
    2. Label1.Caption = "全局钩子测试"
    3. End Sub
    4. Private Sub Form_Load()
    5. hHook = SetWindowsHookEx(13, AddressOf MyKBHook, App.hInstance, 0) '全局
    6. 'hHook = SetWindowsHookEx(2, AddressOf MyKBHook, 0, App.ThreadID)  '局部
    7. End Sub
    8. Private Sub Form_Unload(Cancel As Integer)
    9. Dim ret As Long
    10.     ret = UnhookWindowsHookEx(hHook)
    11. End Sub
    复制代码
    模块代码:

    1. Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _
    2.        (ByVal idHook As Long, _
    3.         ByVal lpfn As Long, _
    4.         ByVal hmod As Long, _
    5.         ByVal dwThreadId As Long) As Long
    6. Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
    7. Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
    8. Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
    9. Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    10. Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    11. Public Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
    12. Public Const vbKeyA = 65
    13. Public hHook As Long
    14. Public Const BM_CLICK = &HF5
    15. Public Type RECT
    16.         Left As Long
    17.         Top As Long
    18.         Right As Long
    19.         Bottom As Long
    20. End Type

    21. Public Function MyKBHook(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    22. Dim msg As Long
    23. Dim lpRect As RECT
    24. Dim x As Long, y As Long
    25. If ncode = 0 Then
    26.     'If wParam = vbKeyA Then
    27.     If GetKeyState(vbKeyA) And &H8000 Then
    28.         GetWindowRect Form1.Command1.hwnd, lpRect
    29.         x = lpRect.Left: y = lpRect.Top
    30.         PostMessage Form1.Command1.hwnd, BM_CLICK, 0, y / 15 * 65536 + x
    31.         Sleep (100)
    32.         PostMessage Form1.Command1.hwnd, BM_CLICK, 0, y / 15 * 65536 + x
    33.     End If
    34. End If
    35. If ncode <> 0 Then
    36. Call CallNextHookEx(hHook, iCode, wParam, lParam)
    37. End If
    38. End Function
    复制代码
    回复

    使用道具 举报

    该用户从未签到

    supercjj2008 发表于 2010-6-11 16:28:13 | 显示全部楼层
    版主真是用心啊,赞一个!
    回复

    使用道具 举报

    该用户从未签到

    maowei 发表于 2010-9-29 12:14:34 | 显示全部楼层
    赞一个!~~~~~~~~~
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    免责声明

    本站中所有被研究的素材与信息全部来源于互联网,版权争议与本站无关。本站所发布的任何软件编程开发或软件的逆向分析文章、逆向分析视频、补丁、注册机和注册信息,仅限用于学习和研究软件安全的目的。全体用户必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。学习编程开发技术或逆向分析技术是为了更好的完善软件可能存在的不安全因素,提升软件安全意识。所以您如果喜欢某程序,请购买注册正版软件,获得正版优质服务!不得将上述内容私自传播、销售或者用于商业用途!否则,一切后果请用户自负!

    QQ|Archiver|手机版|小黑屋|联系我们|宝峰科技 ( 滇ICP备09007156号-2|53050202000040 )

    Copyright © 2001-2023 Discuz! Team. GMT+8, 2026-1-27 01:20 , Processed in 0.257996 second(s), 15 queries , File On Powered by Discuz! X3.59© 2001-2025 Discuz! Team.

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