c#中通过设置钩子监视鼠标移动

提供及时全面的经典资源 这个问题来自论坛提问,C#的大致代码如下
using System;
using
System.Windows.Forms;
using
System.Runtime.InteropServices;
namespace
WindowsApplication1
...
{
   
public
partial
class
Form1 : Form
   
...
{
        
public
Form1()
        
...
{
            InitializeComponent();
        }

         
        
private
void Form1_Load( object
sender, EventArgs e)
        
...
{
            Win32Hook hook
=
new
Win32Hook();
            hook.onMouseChange
+=
new
EventHandler(hook_onMouseChange);
            hook.SetHook();
        }


        
void hook_onMouseChange( object sender, EventArgs e)
        
...
{
            
this .Text =
Cursor.Position.ToString();
        }

    }

   
public
class
Win32Hook
   
...
{

        [DllImport(
" kernel32 "
)]
        
public
static
extern
int
GetCurrentThreadId();

        [DllImport(
" user32 " ,CharSet = CharSet.Auto, CallingConvention =
CallingConvention.StdCall)]
        
public
static
extern
int
SetWindowsHookEx(
            HookType idHook,
            HOOKPROC lpfn,
            
int
hmod,
            
int
dwThreadId);

        
public
enum
HookType
        
...
{
            WH_GETMESSAGE
=
3

        }


        
public
delegate
int HOOKPROC( int nCode, int wParam, int
lParam);

        
public
event
System.EventHandler onMouseChange;

        
public
void
SetHook()
        
...
{
            SetWindowsHookEx(HookType.WH_GETMESSAGE,
               
new HOOKPROC( this
.MyKeyboardProc),
               
0
,
                GetCurrentThreadId());
        }


        
public
int MyKeyboardProc( int nCode, int wParam, int
lParam)
        
...
{
            
if (onMouseChange !=
null
)
            
...
{
                onMouseChange(
null , null
);
            }

            
return
0
;
        }

    }

}