我按如下代码处理键盘钩子,可是只能在本程序激活的情况下才可以,而该程序最小化时就无法相应键盘事件了。
public class Win32Hook
{
public  MainForm mainForm;
[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,
WH_KEYBORD=2,
WH_MOUSEUP=1    
} public delegate int HOOKPROC(int nCode, int wParam, int lParam); public void SetHook()

// set the keyboard hook
SetWindowsHookEx(HookType.WH_KEYBORD,
new HOOKPROC(this.MyKeyboardProc),
0,GetCurrentThreadId());
} public int MyKeyboardProc(int nCode, int wParam, int lParam)
{
MessageBox.Show(wParam.ToString());
return 0;            
}
}