public void sendKeyPress(ushort k)
        {
            WIN32_API.INPUT[] InputData = new WIN32_API.INPUT[2];
            InputData[0].type = (IntPtr)1; //INPUT_KEYBOARD
            InputData[0].wScan = k;
            InputData[0].dwFlags = (IntPtr)WIN32_API.SendInputFlags.KEYEVENTF_SCANCODE;

            InputData[1].type = (IntPtr)1; //INPUT_KEYBOARD
            InputData[1].wScan = k;
            InputData[1].dwFlags = (IntPtr)((uint)WIN32_API.SendInputFlags.KEYEVENTF_SCANCODE | (uint)WIN32_API.SendInputFlags.KEYEVENTF_KEYUP);

            if (WIN32_API.SendInput(2, InputData, Marshal.SizeOf(InputData[0])) == 0)
            {
                System.Diagnostics.Debug.WriteLine("SendInput failed with code: " +
                Marshal.GetLastWin32Error().ToString());
                parent.scriptControl.log("Keypress send failed: " + Marshal.GetLastWin32Error().ToString());
            }

        }
        public void sendKeyUp(ushort k)
        {
            WIN32_API.INPUT[] InputData = new WIN32_API.INPUT[1];
            InputData[0].type = (IntPtr)1; //INPUT_KEYBOARD
            InputData[0].wScan = k;
            InputData[0].dwFlags =(IntPtr) ((uint)WIN32_API.SendInputFlags.KEYEVENTF_SCANCODE | (uint)WIN32_API.SendInputFlags.KEYEVENTF_KEYUP);

            if (WIN32_API.SendInput(1, InputData, Marshal.SizeOf(InputData[0])) == 0)
            {
                parent.scriptControl.log("SendInput failed with code: " +
                Marshal.GetLastWin32Error().ToString());
            }
        }