public static void GetKeyDownEvent(Action <string> response) { s_callback = CreateCallBack((status, data) => { if (data.vkCode == 162)//判断按下的是否是ctrl { isCtrlDown = status == KeyBoredHookStatus.WM_KEYDOWN; } else if (status == KeyBoredHookStatus.WM_KEYDOWN) { //代码 //Console.WriteLine($"{status} 虚拟码{(char)data.vkCode}"); string key = (isCtrlDown ? "Ctrl" : "") + (((char)data.vkCode).ToString().ToUpper()); response(key); } }); IntPtr intPtr = SetWindowsHookEx(WindowsHookType.WH_KEYBOARD_LL, s_callback, IntPtr.Zero, 0); }
extern static IntPtr SetWindowsHookEx(WindowsHookType hookType, WindowsHookCallBack lpfn, IntPtr hmod, int dwThreadId);