C ++ перемещать мышь в окнах с помощью SetCursorPos
Я создал устройство, похожее на wiimote, и я хочу использовать его как мышь в Windows (8.1). Устройство подключается через tcp к программе c32 win32 на моем компьютере с Windows и отправляет позицию, в которой должен перемещаться курсор мыши. Я использую функцию SetCursorPos, чтобы установить позицию, которая прекрасно работает для управления большинством программ. Но когда я пытаюсь управлять, например, диспетчером задач, курсор больше не двигается. Когда я переключаюсь из диспетчера задач обратно в другую программу, она снова работает. Я также пытался использовать функцию SendInput с теми же результатами.
Вот как выглядит мой код с SendInput:
INPUT Input = { 0 };
Input.type = INPUT_MOUSE;
Input.mi.dx = (LONG)posX;
Input.mi.dy = (LONG)posY;
// set move cursor directly
Input.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE;
SendInput(1, &Input, sizeof(INPUT));
С SetCursorPos это всего одна строка:
SetCursorPos(posX, posY);
Кто-нибудь может сказать мне, почему это не работает для некоторых программ? Я знаю, что это должно быть возможно, поскольку я попробовал приложение для смартфона, которое управляет курсором, и оно работало во всех программах.