1,486
社区成员
发帖
与我相关
我的任务
分享
Public Class Form1
Public Delegate Function HookProc(ByVal nCode As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Integer, ByVal lpfn As HookProc, ByVal hmod As Integer, ByVal dwThreadId As Integer) As Integer
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Integer) As Integer
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Integer, ByVal ncode As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Public hKeyBoardHook As Integer
Public hMouseHook As Integer
Public Const WH_MOUSE As Integer = 7
Public Const WH_KEYBOARD As Integer = 2
Private mHookProcedure As HookProc
Public Sub UnHook()
If hKeyBoardHook <> 0 Then
UnhookWindowsHookEx(hKeyBoardHook)
hKeyBoardHook = 0
End If
If hMouseHook <> 0 Then
UnhookWindowsHookEx(hMouseHook)
hMouseHook = 0
End If
End Sub
Public Sub SetHook()
If hKeyBoardHook = 0 Then
mHookProcedure = New HookProc(AddressOf KBHookProc)
hKeyBoardHook = SetWindowsHookEx(WH_KEYBOARD, mHookProcedure, 0, System.AppDomain.GetCurrentThreadId())
End If
If hMouseHook = 0 Then
mHookProcedure = New HookProc(AddressOf MSHookProc)
hMouseHook = SetWindowsHookEx(WH_MOUSE, mHookProcedure, 0, System.AppDomain.GetCurrentThreadId())
End If
End Sub
Public Function MSHookProc(ByVal nCode As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Me.Label1.Text += 1
hKeyBoardHook = CallNextHookEx(hMouseHook, nCode, wParam, lParam)
Return hKeyBoardHook
End Function
Public Function KBHookProc(ByVal nCode As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Me.Label1.Text += 1
KBHookProc = CallNextHookEx(hKeyBoardHook, nCode, wParam, lParam)
Return KBHookProc
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SetHook()
End Sub
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
UnHook()
End Sub
End Class