public static uint SendSingleVK(ushort wVk, NativeMethods.KEYEVENTF dwFlags)
        {
            NativeMethods.KEYBOARDINPUT ip = new NativeMethods.KEYBOARDINPUT();

            ip.type        = NativeMethods.INPUT_KEYBOARD;
            ip.wScan       = 0;
            ip.dwExtraInfo = 0;
            ip.dwFlags     = dwFlags;
            ip.time        = 0;
            ip.wVk         = wVk;

            return(NativeMethods.SendInput(1, new NativeMethods.KEYBOARDINPUT[] { ip }, Marshal.SizeOf(typeof(NativeMethods.KEYBOARDINPUT))));
        }
        public static uint SendSingleScanCode(ushort scanCode, NativeMethods.KEYEVENTF dwFlags)
        {
            NativeMethods.KEYBOARDINPUT ip = new NativeMethods.KEYBOARDINPUT();

            ip.type        = NativeMethods.INPUT_KEYBOARD;
            ip.wScan       = scanCode;
            ip.dwExtraInfo = 0;
            ip.dwFlags     = dwFlags | NativeMethods.KEYEVENTF.SCANCODE;
            if ((scanCode & 0xE000) == 0xE000)
            {
                ip.dwFlags |= NativeMethods.KEYEVENTF.EXTENDEDKEY;
            }
            ip.time = 0;
            ip.wVk  = 0;

            return(NativeMethods.SendInput(1, new NativeMethods.KEYBOARDINPUT[] { ip }, Marshal.SizeOf(typeof(NativeMethods.KEYBOARDINPUT))));
        }