コード例 #1
0
        public static void ShellKeyCombo(VirtualKeyShort vK1, VirtualKeyShort vK2)
        {
            INPUT[] inputs = new INPUT[4];

            inputs[0].type             = INPUT_KEYBOARD;
            inputs[0].U.ki.time        = 0;
            inputs[0].U.ki.wScan       = 0;
            inputs[0].U.ki.dwExtraInfo = GetMessageExtraInfo();
            inputs[0].U.ki.wVk         = vK1;
            inputs[0].U.ki.dwFlags     = 0;

            inputs[1].type             = INPUT_KEYBOARD;
            inputs[1].U.ki.wScan       = 0;
            inputs[1].U.ki.dwExtraInfo = GetMessageExtraInfo();
            inputs[1].U.ki.wVk         = vK2;
            inputs[1].U.ki.dwFlags     = 0;

            inputs[2].type             = INPUT_KEYBOARD;
            inputs[2].U.ki.wScan       = 0;
            inputs[2].U.ki.dwExtraInfo = GetMessageExtraInfo();
            inputs[2].U.ki.wVk         = vK2;
            inputs[2].U.ki.dwFlags     = KEYEVENTF.KEYUP;

            inputs[3].type             = INPUT_KEYBOARD;
            inputs[3].U.ki.wScan       = 0;
            inputs[3].U.ki.dwExtraInfo = GetMessageExtraInfo();
            inputs[3].U.ki.wVk         = vK1;
            inputs[3].U.ki.dwFlags     = KEYEVENTF.KEYUP;

            SendInput(4, inputs, Marshal.SizeOf(typeof(INPUT)));
        }
コード例 #2
0
ファイル: Module.cs プロジェクト: ukgarage/unfair
 public Module(Cheat cheat, VirtualKeyShort bind, string name)
 {
     Cheat     = cheat;
     Bind      = bind;
     Name      = name;
     IsToggled = false;
 }
コード例 #3
0
        public void Send(ScanCodeShort key, float downTime = KEY_DOWN_TIME, Action callback = null)
        {
            if (WinUtils.GetActiveWindow() != this.window)
            {
                Stop();
                return;
            }
            else if (IsKeyDownTimerActive(key))
            {
                return;
            }

            downTime = Math.Max(KEY_DOWN_TIME, downTime);

            Timer timer = TryGetTimerForKey(key);

            if (timer != null)
            {
                timer.Stop();
                timer.Interval     = downTime * 1000;
                keydownTimers[key] = new Tuple <Timer, Action>(timer, callback);
                VirtualKeyShort vk = GetVK(key);
                SendInput(vk, key, KEYEVENTF.SCANCODE);
                timer.Start();
            }
        }
コード例 #4
0
ファイル: TFKey.cs プロジェクト: lnx00/4Hud
 public TFKey(VirtualKeyShort VirtualKeyShort, ScanCodeShort ScanCodeShort, String TFKeyName, String DisplayText)
 {
     this.VirtualKeyShort = VirtualKeyShort;
     this.ScanCodeShort   = ScanCodeShort;
     this.TFKeyName       = TFKeyName;
     this.DisplayText     = DisplayText;
 }
コード例 #5
0
 /// <summary>
 /// Presses a key.
 /// </summary>
 /// <param name="key">Virtual Key Short</param>
 /// <param name="sendToSystem">Set if key message (or a combination of such) cannot be correctly interpreted by the game client.</param>
 public static void Press(VirtualKeyShort key, bool sendToSystem = false)
 {
     if (!GameService.GameIntegration.Gw2IsRunning || sendToSystem)
     {
         var nInputs = new[]
         {
             new Extern.Input
             {
                 type = InputType.KEYBOARD,
                 U    = new InputUnion
                 {
                     ki = new KeybdInput
                     {
                         wScan = (ScanCodeShort)PInvoke.MapVirtualKey((uint)key, MAPVK_VK_TO_VSC),
                         wVk   = key
                     }
                 }
             }
         };
         PInvoke.SendInput((uint)nInputs.Length, nInputs, Extern.Input.Size);
     }
     else
     {
         uint         vkCode = (uint)key;
         ExtraKeyInfo lParam = new ExtraKeyInfo()
         {
             scanCode = (char)PInvoke.MapVirtualKey(vkCode, MAPVK_VK_TO_VSC)
         };
         PInvoke.PostMessage(GameService.GameIntegration.Gw2WindowHandle, WM_KEYDOWN, vkCode, lParam.GetInt());
     }
 }
コード例 #6
0
 /// <summary>
 /// Releases a key.
 /// </summary>
 /// <param name="key">Virtual Key Short</param>
 /// <param name="sendToSystem">Set if key message (or a combination of such) cannot be correctly interpreted by the game client.</param>
 public static void Release(VirtualKeyShort key, bool sendToSystem = false)
 {
     if (!GameService.GameIntegration.Gw2IsRunning || sendToSystem)
     {
         var nInputs = new[]
         {
             new Extern.Input
             {
                 type = InputType.KEYBOARD,
                 U    = new InputUnion
                 {
                     ki = new KeybdInput
                     {
                         wScan   = (ScanCodeShort)PInvoke.MapVirtualKey((uint)key, MAPVK_VK_TO_VSC),
                         wVk     = key,
                         dwFlags = KeyEventF.KEYUP
                     }
                 }
             }
         };
         PInvoke.SendInput((uint)nInputs.Length, nInputs, Extern.Input.Size);
     }
     else
     {
         uint         vkCode = (uint)key;
         ExtraKeyInfo lParam = new ExtraKeyInfo
         {
             scanCode        = (char)PInvoke.MapVirtualKey(vkCode, MAPVK_VK_TO_VSC),
             repeatCount     = 1,
             prevKeyState    = 1,
             transitionState = 1
         };
         PInvoke.PostMessage(GameService.GameIntegration.Gw2WindowHandle, WM_KEYUP, vkCode, lParam.GetInt());
     }
 }
コード例 #7
0
ファイル: ServerPanel.cs プロジェクト: wj-wong/PDS_Project
        delegate void UsefulDelegate(); //used to change labels


        public ServerPanel(int index, Host h)
        {
            i      = index; // index of the server
            _host  = h;     // host global object
            c_flag = false;

            switch (i)
            {
            case 0:
                hk = VirtualKeyShort.KEY_1;
                break;

            case 1:
                hk = VirtualKeyShort.KEY_2;
                break;

            case 2:
                hk = VirtualKeyShort.KEY_3;
                break;

            case 3:
                hk = VirtualKeyShort.KEY_4;
                break;
            }

            this.InitializeComponent();
        }
コード例 #8
0
        public short KeyState(ScanCodeShort key)
        {
            int             keycode  = (int)key;
            VirtualKeyShort keyShort = GetVK(key);

            keycode = (int)(keyShort);
            return(GetKeyState(keycode));
        }
コード例 #9
0
            public KeyboardCommand createVirtualKey(VirtualKeyShort vk, bool keyDown = true)
            {
                var res = new KeyboardCommand();

                res.keyType = KeyType.VIRTUAL_KEY;
                res.vk      = vk;
                res.keyDown = keyDown;
                return(res);
            }
コード例 #10
0
ファイル: KeyInput.cs プロジェクト: kidaww/Kursovoi
        public static short getVirtualKeyShortByName(string name)
        {
            //получаю значение enum по имени
            VirtualKeyShort elem = (VirtualKeyShort)Enum.Parse(typeof(VirtualKeyShort), name);
            //return elem;
            object val = Convert.ChangeType(elem, elem.GetTypeCode());

            return((short)val);
        }
コード例 #11
0
        public void SendVirtual(VirtualKeyShort v)
        {
            ScanCodeShort a = GetScanFromVirtual(v);

            if (a != ScanCodeShort.LBUTTON)
            {
                Send(a);
            }
        }
コード例 #12
0
        /// <summary>
        /// Simulates a key press via User32.dll=>SendInput
        /// </summary>
        /// <param name="key">The key to send.</param>
        public static IEnumerator simulateKeyPressCoroutine(VirtualKeyShort wVk)
        {
            // Written, 08.10.2020

            send(wVk, KeyEventF.KEYDOWN);
            yield return(new WaitForSeconds(0.3f));

            send(wVk, KeyEventF.KEYUP);
        }
コード例 #13
0
 private void kbh_OnKeyPressed(object sender, VirtualKeyShort e)
 {
     if (e == VirtualKeyShort.VOLUME_UP || e == VirtualKeyShort.VOLUME_DOWN ||
         e == VirtualKeyShort.VOLUME_MUTE ||
         e == VirtualKeyShort.MEDIA_NEXT_TRACK || e == VirtualKeyShort.MEDIA_PREV_TRACK ||
         e == VirtualKeyShort.MEDIA_PLAY_PAUSE || e == VirtualKeyShort.MEDIA_STOP)
     {
         VolumeSMTC.FindSMTCAndHide(); //Is this CPU expensive?
         w.Show();
     }
 }
コード例 #14
0
        public void Send(VirtualKeyShort a)
        {
            INPUT[] Inputs = new INPUT[1];
            INPUT   Input  = new INPUT();

            Input.type         = 1; // 1 = Keyboard Input
            Input.U.ki.wVk     = a;
            Input.U.ki.dwFlags = KEYEVENTF.UNICODE;
            Inputs[0]          = Input;
            SendInput(1, Inputs, INPUT.Size);
        }
コード例 #15
0
        public static void PressKey(VirtualKeyShort key)
        {
            const int KEYEVENTF_EXTENDEDKEY = 0; // 0x1;
            const int KEYEVENTF_KEYUP       = 0x2;
            const int EXTRA = 0x4;

            UnhookWindowsHookEx(_hookID);
            keybd_event((byte)key, 0x45, KEYEVENTF_EXTENDEDKEY | EXTRA, (UIntPtr)0);
            keybd_event((byte)key, 0x45, KEYEVENTF_EXTENDEDKEY | EXTRA | KEYEVENTF_KEYUP, (UIntPtr)0);
            _hookID = SetHook(_proc);
        }
コード例 #16
0
        // Written, 08.10.2020

        /// <summary>
        /// Sends the provided key.
        /// </summary>
        /// <param name="key">The key to send</param>
        private static void send(VirtualKeyShort wVk, KeyEventF eventF)
        {
            // Written, 06.10.2020

            Input[] inputs = new Input[1];
            inputs[0].type = 1; // 1 = Keyboard Input
            inputs[0].U    = createKeyEvent(wVk, eventF, 0, UIntPtr.Zero);
            if (NativeMethods.SendInput((uint)inputs.Length, inputs, Input.Size) == 0)
            {
                MoControlsMod.print(string.Format("Error: {0}", new Win32Exception(Marshal.GetLastWin32Error()).Message), Debugging.DebugTypeEnum.full);
            }
        }
コード例 #17
0
        public void SendUp(ScanCodeShort key)
        {
            if (IsKeyDownTimerActive(key))
            {
                Debug.Log("This key is already being pressed");
                return;
            }

            VirtualKeyShort code = GetVK(key);

            SendInput(code, key, KEYEVENTF.KEYUP);
        }
コード例 #18
0
        /* switch callback */



        public static IntPtr KswitchCB(int nCode, IntPtr wParam, IntPtr LParam)
        {
            unsafe
            {
                _nVKS = (VirtualKeyShort)((KBDLLHOOKSTRUCT *)LParam.ToPointer())->vkCode;
            }


            WindowsAPI.UnhookWindowsHookEx(KEYhook);
            WindowsAPI.UnhookWindowsHookEx(MOUSEhook);

            return(new IntPtr(1));
        }
コード例 #19
0
        static void SendKey(VirtualKeyShort vk, bool isDown)
        {
            var InputData = new INPUT[1];

            InputData[0].type       = 1;
            InputData[0].U.ki.wVk   = vk;
            InputData[0].U.ki.wScan = (ScanCodeShort)MapVirtualKey((uint)vk, MAPVK_VK_TO_VSC);
            //InputData[0].U.ki.dwFlags = (isScanCode ? KEYEVENTF.SCANCODE : 0) | KEYEVENTF.KEYUP;
            InputData[0].U.ki.dwFlags     = (isDown ? 0 : KEYEVENTF.KEYUP) | KEYEVENTF.SCANCODE;
            InputData[0].U.ki.time        = 0;
            InputData[0].U.ki.dwExtraInfo = UIntPtr.Zero;

            var r = SendInput(1, InputData, Marshal.SizeOf(typeof(INPUT)));
        }
コード例 #20
0
ファイル: Composer.cs プロジェクト: samhocevar/wincompose
    private void AddInput(VirtualKeyShort vk, ScanCodeShort sc)
    {
        INPUT tmp = new INPUT();
        tmp.type = EINPUT.KEYBOARD;
        tmp.U.ki.wVk = vk;
        tmp.U.ki.wScan = sc;
        tmp.U.ki.time = 0;
        tmp.U.ki.dwFlags = KEYEVENTF.UNICODE;
        tmp.U.ki.dwExtraInfo = UIntPtr.Zero;
        m_input.Add(tmp);

        tmp.U.ki.dwFlags |= KEYEVENTF.KEYUP;
        m_input.Add(tmp);
    }
コード例 #21
0
        private void Add(VirtualKeyShort vk, ScanCodeShort sc)
        {
            INPUT tmp = new INPUT();

            tmp.type             = EINPUT.KEYBOARD;
            tmp.U.ki.wVk         = vk;
            tmp.U.ki.wScan       = sc;
            tmp.U.ki.time        = 0;
            tmp.U.ki.dwFlags     = KEYEVENTF.UNICODE;
            tmp.U.ki.dwExtraInfo = UIntPtr.Zero;
            m_input.Add(tmp);

            tmp.U.ki.dwFlags |= KEYEVENTF.KEYUP;
            m_input.Add(tmp);
        }
コード例 #22
0
 static INPUT GenerateKeystoke(VirtualKeyShort key, KEYEVENTF flags = 0)
 {
     return(new INPUT
     {
         type = 1,
         U = new InputUnion
         {
             ki = new KEYBDINPUT
             {
                 wVk = key,
                 dwFlags = flags,
                 wScan = 0
             }
         }
     });
 }
コード例 #23
0
        public static void SendKeyToWindow(IntPtr Window, VirtualKeyShort Key, bool Up, bool Recursive = false)
        {
            if (!PostMessage(Window, Up ? WM.KEYUP : WM.KEYDOWN, (uint)Key, 0))
            {
                throw new Win32Exception();
            }

            if (Recursive)
            {
                EnumChildWindows(Window, (IntPtr hwnd, IntPtr param) =>
                {
                    SendKeyToWindow(hwnd, Key, Up, false);
                    return(true);
                }, IntPtr.Zero);
            }
        }
コード例 #24
0
 static INPUT GenerateKeystoke(VirtualKeyShort key, KEYEVENTF flags = 0)
 {
     return new INPUT()
     {
         type = 1,
         U = new InputUnion()
         {
             ki = new KEYBDINPUT()
             {
                 wVk = key,
                 dwFlags = flags,
                 wScan = 0
             }
         }
     };
 }
コード例 #25
0
        public static void SendKey(ScanCodeShort sc, VirtualKeyShort vk, bool up = false)
        {
            var inp = new INPUT();

            inp.Type                 = InputType.KEYBOARD;
            inp.Input.ki.dwFlags     = up ? KeyEventFlags.KEYUP : 0;
            inp.Input.ki.wVk         = vk;
            inp.Input.ki.wScan       = sc;
            inp.Input.ki.time        = 0;
            inp.Input.ki.dwExtraInfo = IntPtr.Zero;

            if (SendInput(1, ref inp, INPUT.Size) != 1)
            {
                throw new Win32Exception();
            }
        }
コード例 #26
0
        public void SendDown(ScanCodeShort key)
        {
            if (WinUtils.GetActiveWindow() != this.window)
            {
                Stop();
                return;
            }
            else if (IsKeyDownTimerActive(key))
            {
                Debug.Log("This key is already being pressed");
                return;
            }

            VirtualKeyShort code = GetVK(key);

            SendInput(code, key);
        }
コード例 #27
0
        /// <summary>
        /// Creates a key event wrapped in a inputUnion structure. Passed to: <see cref="NativeMethods.SendInput(uint, Input[], int)"/>
        /// </summary>
        /// <param name="wScan">The scan keycode</param>
        /// <param name="dwFlags">dword flags</param>
        /// <param name="time">the time?</param>
        /// <param name="dwExtraInfo">dword extra info</param>
        /// <returns></returns>
        private static InputUnion createKeyEvent(VirtualKeyShort wVk, KeyEventF dwFlags, int time, UIntPtr dwExtraInfo)
        {
            // Written, 08.10.2020

            InputUnion result = new InputUnion
            {
                ki = new KeyboardInput()
                {
                    dwExtraInfo = dwExtraInfo,
                    dwFlags     = dwFlags,
                    time        = time,
                    wVk         = wVk,
                }
            };

            return(result);
        }
コード例 #28
0
 public static Input GetKeyboardInput(ScanCodeShort keyScanCodeShort, VirtualKeyShort virtualKeyShort,
                                      KeyEventF keyEventF)
 {
     return(new Input()
     {
         type = InputType.KEYBOARD,
         U = new InputUnion()
         {
             ki = new KEYBDINPUT()
             {
                 wScan = keyScanCodeShort,
                 wVk = virtualKeyShort,
                 dwFlags = keyEventF
             }
         }
     });
 }
コード例 #29
0
ファイル: Form1.cs プロジェクト: m1234d/SuperNEAT
 public static void SendI(VirtualKeyShort k, ScanCodeShort kN)
 {
     INPUT[] inputs = new INPUT[1];
     inputs[0] = new INPUT()
     {
         type = InputType.KEYBOARD,
         U    = new InputUnion
         {
             ki = new KEYBDINPUT
             {
                 wVk   = k,
                 wScan = kN,
             }
         }
     };
     ActivateApp("EmuHawk");
     SendInput((uint)1, inputs, INPUT.Size);
 }
コード例 #30
0
        private void SendInput(VirtualKeyShort key, ScanCodeShort scanCode, KEYEVENTF?flag = null)
        {
            INPUT[] Inputs = new INPUT[1];
            INPUT   Input  = new INPUT();

            Input.type         = 1; // 1 = Keyboard Input
            Input.U.ki.wScan   = scanCode;
            Input.U.ki.wVk     = key;
            Input.U.ki.dwFlags = 0;
            if (flag.HasValue)
            {
                Input.U.ki.dwFlags = flag.Value;
            }
            Input.U.ki.time        = 0;
            Input.U.ki.dwExtraInfo = UIntPtr.Zero;
            Inputs[0] = Input;
            uint nb = SendInput(1, Inputs, INPUT.Size);
        }
コード例 #31
0
 VirtualKeyShort GetVK(ScanCodeShort scanCode)
 {
     if (!scanCodeMap.ContainsKey(scanCode))
     {
         uint code   = (uint)scanCode;
         uint result = MapVirtualKeyA(code, (uint)MAPTYPE.MAPVK_VSC_TO_VK);
         if (result != 0)
         {
             VirtualKeyShort keyShort = (VirtualKeyShort)result;
             scanCodeMap[scanCode] = keyShort;
         }
         else
         {
             throw new Exception($"Failed to Map ScanCodeShort: {scanCode} to VirtualKeyShort");
         }
     }
     return(scanCodeMap[scanCode]);
 }
コード例 #32
0
        public static void SendKeyDown(VirtualKeyShort key)
        {
            var union = new InputUnion()
            {
                ki = new KEYBDINPUT()
                {
                    wVk         = key,
                    wScan       = 0,
                    time        = 0,
                    dwExtraInfo = GetMessageExtraInfo()
                }
            };
            var input = new INPUT()
            {
                type = InputType.KEYBOARD, U = union
            };

            SendInput(1, new INPUT[] { input }, INPUT.Size);
        }
コード例 #33
0
 public void ReleaseKey(VirtualKeyShort keyCode) => PressOrReleaseKey(keyCode, false);
コード例 #34
0
ファイル: Composer.cs プロジェクト: samhocevar/wincompose
 public void AddInput(VirtualKeyShort vk)
 {
     AddInput(vk, (ScanCodeShort)0);
 }
コード例 #35
0
ファイル: Win32.cs プロジェクト: WeldFire/TimeTrack
        public static void SendForgroundKey(ScanCodeShort wScan, VirtualKeyShort wVk, int holdTimeout)
        {
            INPUT[] pInputs = new INPUT[1];
            pInputs[0].type = 1;
            pInputs[0].U.ki.wScan = wScan;
            pInputs[0].U.ki.wVk = wVk;

            User32.SendInput((uint)pInputs.Length,pInputs,INPUT.Size);
            System.Threading.Thread.Sleep(holdTimeout);
            pInputs[0].U.ki.dwFlags = KEYEVENTF.KEYUP;
            User32.SendInput((uint)pInputs.Length,pInputs,INPUT.Size);
        }
コード例 #36
0
 public static extern short GetAsyncKeyState(VirtualKeyShort vKey);
コード例 #37
0
ファイル: Win32.cs プロジェクト: WeldFire/TimeTrack
        public static void SendForgroundKeyUp(ScanCodeShort wScan,VirtualKeyShort wVk)
        {
            INPUT[] pInputs = new INPUT[1];
            pInputs[0].type = 1;
            pInputs[0].U.ki.wScan = wScan;
            pInputs[0].U.ki.wVk = wVk;
            pInputs[0].U.ki.dwFlags = KEYEVENTF.KEYUP;

            User32.SendInput((uint)pInputs.Length,pInputs,INPUT.Size);
        }
コード例 #38
0
ファイル: Handler.cs プロジェクト: Wimpje/SymWin
 static extern short GetKeyState(VirtualKeyShort nVirtKey);
コード例 #39
0
ファイル: Composer.cs プロジェクト: modulexcite/wincompose
 private static INPUT NewInputKey(VirtualKeyShort vk)
 {
     INPUT ret = NewInputKey();
     ret.U.ki.wVk = vk;
     return ret;
 }
コード例 #40
0
 public void PressKey(VirtualKeyShort keyCode) => PressOrReleaseKey(keyCode, true);
コード例 #41
0
 private void Text_Changed(object sender, TextChangedEventArgs e)
 {
     TextBox textBox = sender as TextBox;
     string text = textBox.Text;
     if (!string.IsNullOrEmpty(text))
     {
         // Convert character to Virtual Key Hex
         char[] chars = text.ToCharArray();
         short s = NativeMethods.VkKeyScan(chars[0]);
         currentKey = (VirtualKeyShort)s;
     }
 }
コード例 #42
0
        private void PressOrReleaseKey(VirtualKeyShort keyCode, bool down)
        {
            var ki = new NativeMethods.KEYBDINPUT();
            ki.wVk = keyCode;
            if (!down)
                ki.dwFlags = NativeMethods.KEYEVENTF.KEYUP;

            var input = new NativeMethods.INPUT();
            input.type = NativeMethods.INPUT_KEYBOARD;
            input.U.ki = ki;

            NativeMethods.INPUT[] inputs = { input };

            if (NativeMethods.SendInput((uint)inputs.Length, inputs, NativeMethods.INPUT.Size) == 0)
                throw new Win32Exception();
        }
コード例 #43
0
    static void SendKey(VirtualKeyShort vk, bool isDown)
    {
      var InputData = new INPUT[1];

      InputData[0].type = 1;
      InputData[0].U.ki.wVk = vk;
      InputData[0].U.ki.wScan = (ScanCodeShort)MapVirtualKey((uint)vk, MAPVK_VK_TO_VSC);
      //InputData[0].U.ki.dwFlags = (isScanCode ? KEYEVENTF.SCANCODE : 0) | KEYEVENTF.KEYUP;
      InputData[0].U.ki.dwFlags = (isDown ? 0 : KEYEVENTF.KEYUP) | KEYEVENTF.SCANCODE;
      InputData[0].U.ki.time = 0;
      InputData[0].U.ki.dwExtraInfo = UIntPtr.Zero;

      var r = SendInput(1, InputData, Marshal.SizeOf(typeof(INPUT)));
    }