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); }
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 } }