/// <summary> /// 键盘钩子处理方法 /// </summary> /// <param name="nCode">消息类型,这里为键盘消息</param> /// <param name="wParam">消息附加参数</param> /// <param name="lParam">消息附加参数</param> /// <returns></returns> public int KeyBoardHookProc(int nCode, Int32 wParam, IntPtr lParam) { if (Flag == HookFlag.IsRunning && (nCode) >= 0 && (KeyDown != null || KeyUp != null)) { KeyboardHookStruct _keyboardHookStruct = (KeyboardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyboardHookStruct)); if (KeyDown != null && ((int)WM_KEYBOARD.WM_SYSKEYDOWN == wParam || (int)WM_KEYBOARD.WM_KEYDOWN == wParam)) { Keys keyCode = (Keys)_keyboardHookStruct.VKCode; KeyBoardHookEventArgs e = new KeyBoardHookEventArgs(keyCode, KeysState.IsDown); if (KeyDown(this, e)) { return(1); } } if (KeyUp != null && ((int)WM_KEYBOARD.WM_KEYUP == wParam || (int)WM_KEYBOARD.WM_SYSKEYUP == wParam)) { Keys keyCode = (Keys)_keyboardHookStruct.VKCode; KeyBoardHookEventArgs e = new KeyBoardHookEventArgs(keyCode, KeysState.IsUp); if (KeyUp(this, e)) { return(1); } } return(CallNextHookEx(_hookHandle, nCode, wParam, lParam)); } return(0); }
/// <summary> /// 键盘钩子处理方法 /// </summary> /// <param name="nCode">消息类型,这里为键盘消息</param> /// <param name="wParam">消息附加参数</param> /// <param name="lParam">消息附加参数</param> /// <returns></returns> public int KeyBoardHookProc(int nCode,Int32 wParam,IntPtr lParam) { if(Flag == HookFlag.IsRunning && (nCode)>=0&&(KeyDown!=null||KeyUp!=null)) { KeyboardHookStruct _keyboardHookStruct = (KeyboardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyboardHookStruct)); if(KeyDown!=null&&((int)WM_KEYBOARD.WM_SYSKEYDOWN==wParam||(int)WM_KEYBOARD.WM_KEYDOWN==wParam)) { Keys keyCode= (Keys)_keyboardHookStruct.VKCode; KeyBoardHookEventArgs e = new KeyBoardHookEventArgs(keyCode, KeysState.IsDown); if(KeyDown(this,e)) { return 1; } } if(KeyUp!=null&&((int)WM_KEYBOARD.WM_KEYUP==wParam||(int)WM_KEYBOARD.WM_SYSKEYUP==wParam)) { Keys keyCode= (Keys)_keyboardHookStruct.VKCode; KeyBoardHookEventArgs e = new KeyBoardHookEventArgs(keyCode, KeysState.IsUp); if(KeyUp(this,e)) { return 1; } } return CallNextHookEx(_hookHandle, nCode, wParam, lParam); } return 0; }
private bool keyBoardHook_KeyDown(object sender, KeyBoardHookEventArgs e) { int index = Array.IndexOf(_myKeys._leftkeys, (Hook.Key)e.Key); IntPtr war3 = FindWindow(null, "Warcraft III"); if(war3==IntPtr.Zero)return false; if (index != -1) { SendMessage(war3, (uint)WM_KEYBOARD.WM_KEYDOWN, (int)_myKeys._rightkeys[index], 0); SendMessage(war3, (uint)WM_KEYBOARD.WM_KEYUP, (int)_myKeys._rightkeys[index], 0); return true; } else if((index=Array.IndexOf(_myKeys._leftResKeys,(Hook.Key)e.Key))!=-1) { SendMessage(war3, (uint)WM_KEYBOARD.WM_KEYDOWN, (int)_myKeys._rightResKeys[index], 0); SendMessage(war3, (uint)WM_KEYBOARD.WM_KEYUP, (int)_myKeys._rightResKeys[index], 0); return true; } else if((index=Array.IndexOf(_myKeys._myKaelKeys.KaelChangeKeys(),(Hook.Key)e.Key))!=-1) { SendMessage(war3, (uint)WM_KEYBOARD.WM_KEYDOWN, (int)_myKeys._rightResKeys[index], 0); SendMessage(war3, (uint)WM_KEYBOARD.WM_KEYUP, (int)_myKeys._rightResKeys[index], 0); return true; } else if(e.Key==Hook.Keys.Enter) { keyBoardHook.Flag=HookFlag.IsPaused; return false; } return false; }