我按如下代码处理键盘钩子,可是只能在本程序激活的情况下才可以,而该程序最小化时就无法相应键盘事件了。
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;
}
}
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;
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货