Esempio n. 1
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);
 }
Esempio n. 2
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;
 }
Esempio n. 3
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;
 }