// 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);
            }
        }
        /// <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);
        }
예제 #3
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
             }
         }
     });
 }
예제 #4
0
파일: Program.cs 프로젝트: RubeAka/Monitor3
        public static void SendKey(ushort key, KeyEventF keyEvent)
        {
            Input[] inputs =
            {
                new Input
                {
                    type = (int)InputType.Keyboard,
                    u    = new InputUnion
                    {
                        ki = new KeyboardInput
                        {
                            wVk         = 0,
                            wScan       = key,
                            dwFlags     = (uint)(keyEvent | KeyEventF.Scancode),
                            dwExtraInfo = GetMessageExtraInfo()
                        }
                    }
                }
            };

            SendInput((uint)inputs.Length, inputs, Marshal.SizeOf(typeof(Input)));
        }
예제 #5
0
 public static extern void keybd_event([In] VirtualKeyCode bVk, [In] byte bScan, [In] KeyEventF dwFlags,
                                       [In] uint dwExtraInfo);