Imports
System.Runtime.InteropServices
Public
Class Form1
Private Structure MOUSEHOOKSTRUCT
Public pt As Point
Public hWnd As IntPtr
Public hitTest As Int32
Public extra As Int32
End Structure
Private _mouseHook As Int32 = 0
Private Const WH_MOUSE As Int32 = 7
Private Delegate Function CallBack(ByVal nCode As Int32, ByVal wParam As IntPtr, ByRef lParam As MOUSEHOOKSTRUCT) As Int32
<MarshalAs(UnmanagedType.FunctionPtr)> Private _mouseProc As CallBack
Private Declare Function SetWindowsHookExW Lib "user32.dll" (ByVal idHook As Int32, ByVal HookProc As CallBack, ByVal hInstance As IntPtr, ByVal wParam As Int32) As Int32
Private Declare Function CallNextHookEx Lib "user32.dll" (ByVal idHook As Int32, ByVal nCode As Int32, ByVal wParam As IntPtr, ByRef lParam As MOUSEHOOKSTRUCT) As Int32
Private Declare Function GetCurrentThreadId Lib "kernel32.dll" () As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If _mouseHook = 0 Then
_mouseProc = New CallBack(AddressOf MouseHookProc)
_mouseHook = SetWindowsHookExW(WH_MOUSE, _mouseProc, IntPtr.Zero, GetCurrentThreadId)
Dim err As Integer = Marshal.GetLastWin32Error
End If
End Sub
Private Shared Function MouseHookProc(ByVal nCode As Int32, ByVal wParam As IntPtr, ByRef lParam As MOUSEHOOKSTRUCT) As Int32
Debug.Print("Message = {0}, x={1}, y={2}", wParam.ToInt32, lParam.pt.X, lParam.pt.Y)
Return CallNextHookEx(WH_MOUSE, nCode, wParam, lParam)
End Function
End Class
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=585131&SiteID=1
本文提供了一个使用C#实现鼠标钩子功能的示例代码,该代码展示了如何通过设置Windows钩子来捕获并处理鼠标事件。

2320

被折叠的 条评论
为什么被折叠?



