public void PressKey(KeysEx keyCode)
        {
            uint  intReturn = 0;
            INPUT structInput;

            structInput                = new INPUT();
            structInput.type           = (uint)1;
            structInput.ki.wScan       = 0;
            structInput.ki.time        = 0;
            structInput.ki.dwFlags     = 0;
            structInput.ki.dwExtraInfo = 0;
            // Key down the actual key-code

            structInput.ki.wVk = (ushort)keyCode;             //KeysEx.SHIFT etc.
            intReturn          = NativeWin32.SendInput(1, ref structInput, Marshal.SizeOf(structInput));
        }
        public void ReleaseKey(KeysEx keyCode)
        {
            uint  intReturn = 0;
            INPUT structInput;

            structInput                = new INPUT();
            structInput.type           = (uint)1;
            structInput.ki.wScan       = 0;
            structInput.ki.time        = 0;
            structInput.ki.dwFlags     = 0;
            structInput.ki.dwExtraInfo = 0;

            // Key up the actual key-code
            structInput.ki.dwFlags = NativeWin32.KEYEVENTF_KEYUP;
            structInput.ki.wVk     = (ushort)keyCode;        // (ushort)NativeWin32.KeysEx.SNAPSHOT;//vk;
            intReturn = NativeWin32.SendInput((uint)1, ref structInput, Marshal.SizeOf(structInput));
        }