TA的每日心情 | 2025-6-23 21:25 |
|---|
签到天数: 126 天 [LV.7]常住居民III
|
呵呵,实现了,用VB就是累人……
Form窗口代码:-
- Private Sub Command1_Click()
- Label1.Caption = "全局钩子测试"
- End Sub
- Private Sub Form_Load()
- hHook = SetWindowsHookEx(13, AddressOf MyKBHook, App.hInstance, 0) '全局
- 'hHook = SetWindowsHookEx(2, AddressOf MyKBHook, 0, App.ThreadID) '局部
- End Sub
- Private Sub Form_Unload(Cancel As Integer)
- Dim ret As Long
- ret = UnhookWindowsHookEx(hHook)
- End Sub
复制代码 模块代码:-
- Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _
- (ByVal idHook As Long, _
- ByVal lpfn As Long, _
- ByVal hmod As Long, _
- ByVal dwThreadId As Long) As Long
- Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
- Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
- Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
- 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
- Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
- Public Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
- Public Const vbKeyA = 65
- Public hHook As Long
- Public Const BM_CLICK = &HF5
- Public Type RECT
- Left As Long
- Top As Long
- Right As Long
- Bottom As Long
- End Type
- Public Function MyKBHook(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
- Dim msg As Long
- Dim lpRect As RECT
- Dim x As Long, y As Long
- If ncode = 0 Then
- 'If wParam = vbKeyA Then
- If GetKeyState(vbKeyA) And &H8000 Then
- GetWindowRect Form1.Command1.hwnd, lpRect
- x = lpRect.Left: y = lpRect.Top
- PostMessage Form1.Command1.hwnd, BM_CLICK, 0, y / 15 * 65536 + x
- Sleep (100)
- PostMessage Form1.Command1.hwnd, BM_CLICK, 0, y / 15 * 65536 + x
- End If
- End If
- If ncode <> 0 Then
- Call CallNextHookEx(hHook, iCode, wParam, lParam)
- End If
- End Function
复制代码 |
|