Пример #1
0
        public void ProcessInputKeyboard(byte[] data)
        {
            bool  keyUp  = BitConverter.ToBoolean(data, sizeof(bool));
            short vkCode = BitConverter.ToInt16(data, 2 * sizeof(bool));

            if (!keyUp && (vkCode == 164 || vkCode == 165))
            {
                // MessageBox.Show("alt pressed");
                _altPressed = true;
            }

            else if (keyUp && (vkCode == 164 || vkCode == 165))
            {
                _altPressed = false;
                _alreadyDown.Clear();
            }


            InputManager.INPUT[] inputs = new InputManager.INPUT[1];
            inputs[0].type         = 1; // 1 = keyboard, 0 = mouse
            inputs[0].U.ki.dwFlags = keyUp ? (uint)2 : (uint)0;
            inputs[0].U.ki.wVk     = vkCode;
            inputs[0].U.ki.time    = 0;
            if (_altPressed && !keyUp && vkCode != 164 && vkCode != 165)
            {
                if (_alreadyDown.Contains(vkCode))
                {
                    inputs[0].U.ki.dwFlags = 2;
                    _alreadyDown.Remove(vkCode);
                }
                else
                {
                    _alreadyDown.Add(vkCode);
                }
                // MessageBox.Show("alt pressed");
            }

            //Console.WriteLine("alt NOT pressed");
            SendInput(1, inputs, Marshal.SizeOf((object)inputs[0]));
            // Console.WriteLine("babba " + vkCode);
        }
Пример #2
0
        public void ProcessInputMouse(byte[] data)
        {
            int   x         = BitConverter.ToInt32(data, sizeof(bool));
            int   y         = BitConverter.ToInt32(data, sizeof(bool) + sizeof(Int32));
            int   wParam    = BitConverter.ToInt32(data, sizeof(bool) + 2 * sizeof(Int32));
            short mouseData = BitConverter.ToInt16(data, sizeof(bool) + 3 * sizeof(Int32));

            InputManager.INPUT[] inputs = new InputManager.INPUT[1];
            inputs[0].type         = 0;
            inputs[0].U.mi.dx      = x;
            inputs[0].U.mi.dy      = y;
            inputs[0].U.mi.time    = 0;
            inputs[0].U.mi.dwFlags = (uint)(InputManager.MouseEvents.MOUSEEVENTF_ABSOLUTE); // TODO struct mouseevents
            switch (wParam)
            {
            case (int)InputManager.MouseMessages.WM_LBUTTONDOWN:
                inputs[0].U.mi.dwFlags = inputs[0].U.mi.dwFlags | (uint)InputManager.MouseEvents.MOUSEEVENTF_LEFTDOWN;
                break;

            case (int)InputManager.MouseMessages.WM_LBUTTONUP:
                inputs[0].U.mi.dwFlags = inputs[0].U.mi.dwFlags | (uint)InputManager.MouseEvents.MOUSEEVENTF_LEFTUP;
                break;

            case (int)InputManager.MouseMessages.WM_RBUTTONDOWN:
                inputs[0].U.mi.dwFlags = inputs[0].U.mi.dwFlags | (uint)InputManager.MouseEvents.MOUSEEVENTF_RIGHTDOWN;
                break;

            case (int)InputManager.MouseMessages.WM_RBUTTONUP:
                inputs[0].U.mi.dwFlags = inputs[0].U.mi.dwFlags | (uint)InputManager.MouseEvents.MOUSEEVENTF_RIGHTUP;
                break;

            case (int)InputManager.MouseMessages.WM_MOUSEMOVE:
                inputs[0].U.mi.dwFlags = inputs[0].U.mi.dwFlags | (uint)InputManager.MouseEvents.MOUSEEVENTF_MOVE;
                break;

            case (int)InputManager.MouseMessages.WM_MBUTTONDOWN:
                inputs[0].U.mi.dwFlags = inputs[0].U.mi.dwFlags | (uint)InputManager.MouseEvents.MOUSEEVENTF_MIDDLEDOWN;
                break;

            case (int)InputManager.MouseMessages.WM_MBUTTONUP:
                inputs[0].U.mi.dwFlags = inputs[0].U.mi.dwFlags | (uint)InputManager.MouseEvents.MOUSEEVENTF_MIDDLEUP;
                break;

            case (int)InputManager.MouseMessages.WM_LBUTTONDBLCLK:
                inputs[0].U.mi.dwFlags = inputs[0].U.mi.dwFlags | (uint)InputManager.MouseEvents.MOUSEEVENTF_LEFTDOWN | (uint)InputManager.MouseEvents.MOUSEEVENTF_LEFTUP;
                break;

            case (int)InputManager.MouseMessages.WM_RBUTTONDBLCLK:
                inputs[0].U.mi.dwFlags = inputs[0].U.mi.dwFlags | (uint)InputManager.MouseEvents.MOUSEEVENTF_RIGHTDOWN | (uint)InputManager.MouseEvents.MOUSEEVENTF_RIGHTUP;
                break;

            case (int)InputManager.MouseMessages.WM_MBUTTONDBLCLK:
                inputs[0].U.mi.dwFlags = inputs[0].U.mi.dwFlags | (uint)InputManager.MouseEvents.MOUSEEVENTF_MIDDLEDOWN | (uint)InputManager.MouseEvents.MOUSEEVENTF_MIDDLEUP;
                break;

            case (int)InputManager.MouseMessages.WM_MOUSEWHEEL:
                inputs[0].U.mi.dwFlags   = inputs[0].U.mi.dwFlags | (uint)InputManager.MouseEvents.MOUSEEVENTF_WHEEL;
                inputs[0].U.mi.mouseData = mouseData;
                break;

            case (int)InputManager.MouseMessages.WM_MOUSEHWHEEL:
                inputs[0].U.mi.dwFlags   = inputs[0].U.mi.dwFlags | (uint)InputManager.MouseEvents.MOUSEEVENTF_HWHEEL;
                inputs[0].U.mi.mouseData = mouseData;
                break;

            case (int)InputManager.MouseMessages.WM_XBUTTONDOWN:
                inputs[0].U.mi.dwFlags = inputs[0].U.mi.dwFlags | (uint)InputManager.MouseEvents.MOUSEEVENTF_XDOWN;
                break;

            case (int)InputManager.MouseMessages.WM_XBUTTONUP:
                inputs[0].U.mi.dwFlags = inputs[0].U.mi.dwFlags | (uint)InputManager.MouseEvents.MOUSEEVENTF_XUP;
                break;

            case (int)InputManager.MouseMessages.WM_XBUTTONDBLCLK:
                inputs[0].U.mi.dwFlags = inputs[0].U.mi.dwFlags | (uint)InputManager.MouseEvents.MOUSEEVENTF_XDOWN | (uint)InputManager.MouseEvents.MOUSEEVENTF_XUP;
                break;
            }
            SendInput(1, inputs, Marshal.SizeOf((object)inputs[0]));
            if (wParam == (int)InputManager.MouseMessages.WM_LBUTTONDBLCLK || wParam == (int)InputManager.MouseMessages.WM_RBUTTONDBLCLK ||
                wParam == (int)InputManager.MouseMessages.WM_MBUTTONDBLCLK || wParam == (int)InputManager.MouseMessages.WM_XBUTTONDBLCLK)
            {
                SendInput(1, inputs, Marshal.SizeOf((object)inputs[0]));     //resend the event if doubleclick
            }
        }