下面是一个.net中如何实现的例子。 Managing Low-Level Keyboard Hooks in VB .NET http://www.developer.com/net/net/article.php/11087_2193301_1
C#中键盘钩子的使用 [转帖] 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_KEYBOARD = 2 }public delegate int HOOKPROC(int nCode, int wParam, int lParam);public void SetHook() { // set the keyboard hook SetWindowsHookEx(HookType.WH_KEYBOARD, new HOOKPROC(this.MyKeyboardProc), 0, GetCurrentThreadId()); }public int MyKeyboardProc(int nCode, int wParam, int lParam) { //在这里放置你的处理代码 return 0; } } 使用方法 可以在Form的构造函数里放入 Win32Hook hook = new Win32Hook(); hook.SetHook();
参考-- HOW TO: Set a Windows Hook in Visual C# .NET http://support.microsoft.com/kb/318804/EN-US/Using Hooks from C# - C# Programming: http://www.thecodeproject.com/csharp/NetWin32Hooks.asp
Hook was used in .net framework,but Global Hook no supperted .net framework, because to install the Global Hook need the Dynamic-link Library(dll), and function Pointer was proxies by IL in .net framework.
Managing Low-Level Keyboard Hooks in VB .NET
http://www.developer.com/net/net/article.php/11087_2193301_1
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_KEYBOARD = 2
}public delegate int HOOKPROC(int nCode, int wParam, int lParam);public void SetHook()
{
// set the keyboard hook
SetWindowsHookEx(HookType.WH_KEYBOARD,
new HOOKPROC(this.MyKeyboardProc),
0,
GetCurrentThreadId());
}public int MyKeyboardProc(int nCode, int wParam, int lParam)
{
//在这里放置你的处理代码 return 0;
}
}
使用方法
可以在Form的构造函数里放入
Win32Hook hook = new Win32Hook();
hook.SetHook();
HOW TO: Set a Windows Hook in Visual C# .NET
http://support.microsoft.com/kb/318804/EN-US/Using Hooks from C# - C# Programming:
http://www.thecodeproject.com/csharp/NetWin32Hooks.asp
because to install the Global Hook need the Dynamic-link Library(dll), and function Pointer was proxies by IL in .net framework.