//全局键盘钩子
//第一个参数:指定钩子的类型,有WH_MOUSE、WH_KEYBOARD等十多种(具体参见MSDN)
//第二个参数:标识钩子函数的入口地址
//第三个参数:钩子函数所在模块的句柄;
//第四个参数:钩子相关函数的ID用以指定想让钩子去钩哪个线程,为0时则拦截整个系统的消息。
//安装在钩子链表中的钩子子程
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr SetWindowsHookEx(int hookid, [MarshalAs(UnmanagedType.FunctionPtr)] HookProc lpfn, IntPtr hinst, int threadid);
//移除由SetWindowsHookEx方法安装在钩子链表中的钩子子程
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern bool UnhookWindowsHookEx(IntPtr hhook);
//对一个事件处理的hook可能有多个,它们成链状,使用CallNextHookEx一级一级地调用。简单解释过来就是“调用下一个HOOK”
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]