public class Hook3
{ public delegate void HookProc(int nCode, int wParam, IntPtr lParam); HookProc KeyHandle; static int hHook = 0; public const int WH_KEYBOARD_LL = 13; #region DllImport //设置钩子
[DllImport("user32.dll")]
public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
//抽掉钩子
public static extern bool UnhookWindowsHookEx(int idHook);
[DllImport("user32.dll")]
//调用下一个钩子
public static extern int CallNextHookEx(int idHook, int nCode, int wParam, IntPtr lParam); //[DllImport("kernel32.dll")]
//public static extern int GetCurrentThreadId(); [DllImport("kernel32.dll")]
public static extern IntPtr GetModuleHandle(string name); [StructLayout(LayoutKind.Sequential)]
public class KeyBoardHookStruct
{
public int vkCode;
public int scanCode;
public int flags;
public int time;
public int dwExtraInfo;
} #endregion public Hook3()
{
} //开始
public void Start()
{
KeyHandle += new HookProc(this.HookProcMethod);
hHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyHandle, GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0);
} //开始处理 记录
private void HookProcMethod(int nCode, int wParam, IntPtr lParam)
{
KeyBoardHookStruct KBHS = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
System.Console.Write(KBHS.vkCode.ToString());
//return KBHS.vkCode;
} //析构函数
~Hook3()
{
UnhookWindowsHookEx(hHook);
}
}
上面是代码 为什么每次捕获的我键盘事件 都会出现问题
我按了一下键盘 可他捕获却是输出的2次 等待高手帮忙解决
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货