public static void SendKeys(bool control, bool alt, bool shift, Win32Constants.VirtualKeys keys)
        {
            if (control)
            {
                PressKey(Win32Constants.VirtualKeys.ControlLeft);
            }
            if (alt)
            {
                PressKey(Win32Constants.VirtualKeys.Menu);
            }
            if (shift)
            {
                PressKey(Win32Constants.VirtualKeys.ShiftLeft);
            }

            SendKey(keys);

            if (control)
            {
                ReleaseKey(Win32Constants.VirtualKeys.ControlLeft);
            }
            if (alt)
            {
                ReleaseKey(Win32Constants.VirtualKeys.Menu);
            }
            if (shift)
            {
                ReleaseKey(Win32Constants.VirtualKeys.ShiftLeft);
            }

            Application.DoEvents();
        }
示例#2
0
        public InputBuilder AddKeyUp(Win32Constants.VirtualKeys keyCode)
        {
            var up =
                new Win32Types.INPUT {
                type = Win32Types.INPUTTYPE.INPUT_KEYBOARD,
//                    Data ={
//                        Keyboard =
//                            new Win32Types.KEYBDINPUT{
//                                KeyCode = (UInt16) keyCode,
//                                Scan = 0,
//                                Flags = (UInt32) (IsExtendedKey(keyCode)
//                                    ? KeyboardFlag.KeyUp | KeyboardFlag.ExtendedKey
//                                    : KeyboardFlag.KeyUp),
//                                Time = 0,
//                                ExtraInfo = IntPtr.Zero
//                            }
//                    }
            };
            var keybdinput = new Win32Types.KEYBDINPUT {
                wVk     = keyCode,
                wScan   = 0,
                dwFlags =
                    IsExtendedKey(keyCode)
                        ? Win32Constants.KeyboardEvent.KEYEVENTF_KEYUP |
                    Win32Constants.KeyboardEvent.KEYEVENTF_EXTENDEDKEY
                        : Win32Constants.KeyboardEvent.KEYEVENTF_KEYUP,
                time        = 0,
                dwExtraInfo = IntPtr.Zero
            };

            up.mkhi.ki = keybdinput;
            _inputList.Add(up);
            return(this);
        }
示例#3
0
 public static bool IsExtendedKey(Win32Constants.VirtualKeys keyCode)
 {
     if (keyCode == Win32Constants.VirtualKeys.Menu ||
         keyCode == Win32Constants.VirtualKeys.LMenu ||
         keyCode == Win32Constants.VirtualKeys.RMenu ||
         keyCode == Win32Constants.VirtualKeys.Control ||
         keyCode == Win32Constants.VirtualKeys.ControlRight ||
         keyCode == Win32Constants.VirtualKeys.Insert ||
         keyCode == Win32Constants.VirtualKeys.Delete ||
         keyCode == Win32Constants.VirtualKeys.Home ||
         keyCode == Win32Constants.VirtualKeys.End ||
         keyCode == Win32Constants.VirtualKeys.Prior ||
         keyCode == Win32Constants.VirtualKeys.Next ||
         keyCode == Win32Constants.VirtualKeys.Right ||
         keyCode == Win32Constants.VirtualKeys.Up ||
         keyCode == Win32Constants.VirtualKeys.Left ||
         keyCode == Win32Constants.VirtualKeys.Down ||
         keyCode == Win32Constants.VirtualKeys.NumLock ||
         keyCode == Win32Constants.VirtualKeys.Cancel ||
         keyCode == Win32Constants.VirtualKeys.Snapshot ||
         keyCode == Win32Constants.VirtualKeys.Divide)
     {
         return(true);
     }
     return(false);
 }
        private static void PressKey(Win32Constants.VirtualKeys keys)
        {
            var input = new Win32Types.INPUT {
                Type = Win32Types.INPUTTYPE.INPUT_KEYBOARD,
                ki   =
                {
                    wVk     = keys,
                    dwFlags = Win32Constants.KeyboardEvent.KEYEVENTF_EXTENDEDKEY
                }
            };

            Win32Declares.KeyBoard.SendInput(1, new[] { input }, Win32Types.KEYBDINPUT.cbSize);
        }
示例#5
0
        public InputBuilder AddKeyDown(Win32Constants.VirtualKeys keyCode)
        {
            var down = new Win32Types.INPUT {
                type = Win32Types.INPUTTYPE.INPUT_KEYBOARD,
            };
            var keybdinput = new Win32Types.KEYBDINPUT {
                wVk         = keyCode,
                wScan       = 0,
                dwFlags     = IsExtendedKey(keyCode) ? Win32Constants.KeyboardEvent.KEYEVENTF_EXTENDEDKEY : 0,
                time        = 0,
                dwExtraInfo = IntPtr.Zero
            };

            down.mkhi.ki = keybdinput;
            _inputList.Add(down);
            return(this);
        }
示例#6
0
 public bool IsHardwareKeyUp(Win32Constants.VirtualKeys keyCode)
 {
     return(!IsHardwareKeyDown(keyCode));
 }
示例#7
0
        public bool IsHardwareKeyDown(Win32Constants.VirtualKeys keyCode)
        {
            int result = Win32Declares.KeyBoard.GetAsyncKeyState((UInt16)keyCode);

            return(result < 0);
        }
示例#8
0
 public InputBuilder AddKeyPress(Win32Constants.VirtualKeys keyCode)
 {
     AddKeyDown(keyCode);
     AddKeyUp(keyCode);
     return(this);
 }
示例#9
0
 public IKeyboardSimulator ModifiedKeyStroke(Win32Constants.VirtualKeys modifierKey,
                                             IEnumerable <Win32Constants.VirtualKeys> keyCodes)
 {
     ModifiedKeyStroke(new[] { modifierKey }, keyCodes);
     return(this);
 }
示例#10
0
 public IKeyboardSimulator ModifiedKeyStroke(
     IEnumerable <Win32Constants.VirtualKeys> modifierKeyCodes, Win32Constants.VirtualKeys keyCode)
 {
     ModifiedKeyStroke(modifierKeyCodes, new[] { keyCode });
     return(this);
 }
示例#11
0
 public IKeyboardSimulator ModifiedKeyStroke(Win32Constants.VirtualKeys modifierKeyCode,
                                             Win32Constants.VirtualKeys keyCode)
 {
     ModifiedKeyStroke(new[] { modifierKeyCode }, new[] { keyCode });
     return(this);
 }
示例#12
0
 public IKeyboardSimulator KeyPress(Win32Constants.VirtualKeys keyCode)
 {
     Win32Types.INPUT[] inputList = new InputBuilder().AddKeyPress(keyCode).ToArray();
     SendSimulatedInput(inputList);
     return(this);
 }
示例#13
0
 private static void SendKey(Win32Constants.VirtualKeys keys)
 {
     PressKey(keys);
     ReleaseKey(keys);
 }
示例#14
0
        public bool IsTogglingKeyInEffect(Win32Constants.VirtualKeys keyCode)
        {
            Int16 result = Win32Declares.KeyBoard.GetKeyState((UInt16)keyCode);

            return((result & 0x01) == 0x01);
        }
 public SendKeysCommand(Win32Constants.VirtualKeys keyCodes, params Win32Constants.VirtualKeys[] modifierKeyCodes)
 {
     _keyCodes         = keyCodes;
     _modifierKeyCodes = modifierKeyCodes;
 }
示例#16
0
        public bool IsKeyDown(Win32Constants.VirtualKeys keyCode)
        {
            Int16 result = Win32Declares.KeyBoard.GetKeyState((UInt16)keyCode);

            return(result < 0);
        }
示例#17
0
 private static void sendKey(Win32Constants.VirtualKeys keys)
 {
     pressKey(keys);
     releaseKey(keys);
 }