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

Кто-нибудь может сказать мне, почему это не работает для некоторых программ? Я знаю, что это должно быть возможно, поскольку я попробовал приложение для смартфона, которое управляет курсором, и оно работало во всех программах.

Ответы на вопрос(2)

Ваш ответ на вопрос