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 delegate int HOOKPROC(int nCode, int wParam, int lParam);
public void SetHook()
{
//设置鼠标钩子
SetWindowsHookEx(HookType.WH_MOUSE,
new HOOKPROC(this.MouseProc),
0,
GetCurrentThreadId());
//设置键盘钩子
SetWindowsHookEx(HookType.WH_MOUSE,
new HOOKPROC(this.KeyboardProc),
0,
GetCurrentThreadId());
}
public int KeyboardProc(int nCode, int wParam, int lParam)
{
//在这里放置你的处理代码
//不处理就到达了禁止的作用
return 1;
}
public int MouseProc(int nCode, int wParam, int lParam)
{
//在这里放置你的处理代码
//不处理就到达了禁止的作用
return 1;
}
}
可以在Form的构造函数里放入
Win32Hook hook = new Win32Hook();
hook.SetHook();