flags: 1 = down, 0 = up
| 21 | static void LoopU(BYTE vk, UINT delay = 10) { while (!state(vk)) Sleep(delay); } |
| 22 | // flags: 1 = down, 0 = up |
| 23 | static void State(BYTE vk, bool press = true, ULONG_PTR info = 0) { |
| 24 | if (vk) |
| 25 | { |
| 26 | INPUT input = {}; |
| 27 | if (vk < 0x07 || vk == VK_WHEELUP || vk == VK_WHEELDOWN) |
| 28 | { |
| 29 | input.type = INPUT_MOUSE; |
| 30 | if (vk == VK_LBUTTON) input.mi = press ? MOUSEINPUT({ 0, 0, 0, MOUSEEVENTF_LEFTDOWN, 0, info }) : MOUSEINPUT({ 0, 0, 0, MOUSEEVENTF_LEFTUP, 0, info }); |
| 31 | else if (vk == VK_RBUTTON) input.mi = press ? MOUSEINPUT({ 0, 0, 0, MOUSEEVENTF_RIGHTDOWN, 0, info }) : input.mi = MOUSEINPUT({ 0, 0, 0, MOUSEEVENTF_RIGHTUP, 0, info }); |
| 32 | else if (vk == VK_MBUTTON) input.mi = press ? MOUSEINPUT({ 0, 0, 0, MOUSEEVENTF_MIDDLEDOWN, 0, info }) : input.mi = MOUSEINPUT({ 0, 0, 0, MOUSEEVENTF_MIDDLEUP, 0, info }); |
| 33 | else if (vk == VK_XBUTTON1) input.mi = press ? MOUSEINPUT({ 0, 0, XBUTTON1, MOUSEEVENTF_XDOWN, 0, info }) : input.mi = MOUSEINPUT({ 0, 0, XBUTTON1, MOUSEEVENTF_XUP, 0, info }); |
| 34 | else if (vk == VK_XBUTTON2) input.mi = press ? MOUSEINPUT({ 0, 0, XBUTTON2, MOUSEEVENTF_XDOWN, 0, info }) : input.mi = MOUSEINPUT({ 0, 0, XBUTTON2, MOUSEEVENTF_XUP, 0, info }); |
| 35 | else if (vk == VK_WHEELUP) input.mi = { 0, 0, (DWORD)(WHEEL_DELTA), MOUSEEVENTF_WHEEL, 0, info }; |
| 36 | else if (vk == VK_WHEELDOWN) input.mi = { 0, 0, (DWORD)(-WHEEL_DELTA), MOUSEEVENTF_WHEEL, 0, info }; |
| 37 | } |
| 38 | else |
| 39 | { |
| 40 | input.type = INPUT_KEYBOARD; |
| 41 | input.ki = press ? KEYBDINPUT({ static_cast<WORD>(vk), static_cast<USHORT>(MapVirtualKeyW(vk, MAPVK_VK_TO_VSC)), 0, 0, info }) : KEYBDINPUT({ static_cast<WORD>(vk), static_cast<USHORT>(MapVirtualKeyW(vk, MAPVK_VK_TO_VSC)), KEYEVENTF_KEYUP, 0, info }); |
| 42 | } |
| 43 | SendInput(1, &input, sizeof(input)); |
| 44 | } |
| 45 | } |
| 46 | static void State(HWND wnd, BYTE vk, POINT pos = { 0 }, bool press = true) |
| 47 | { |
| 48 | if (isMouse(vk)) |
nothing calls this directly
no outgoing calls
no test coverage detected