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;

}

}

}

唐月华