Отправить жест GID_ZOOM в активное окно

Как я могу отправить жест увеличения в текущее активное окно?
Я пытался создать структуру GESTUREINFO, но я не знаю, как правильно передать структуру. Пока что вот что я получил.

GESTUREINFO gi;
POINT pt;
ZeroMemory(&gi, sizeof(GESTUREINFO));
gi.dwID = GID_ZOOM;
GetCursorPos(&pt);
gi.ptsLocation.x = pt.x;
gi.ptsLocation.y = pt.y;
gi.ullArguments = value;
gi.cbSize = sizeof(GESTUREINFO);

::SendMessage(hwnd, WM_GESTURE, reinterpret_cast<WPARAM>(&gu.ullArguments), reinterpret_cast<LPARAM>(&gi));

Мой способ отправки WPARAM и LPARAM неправильный?

0

Решение

Вы не можете подделать ввод, используя SendMessage, WM_GESTURE не является исключением. В то время как WPARAM легко построить, система не предлагает API для создания справиться к GESTUREINFO, который должен быть передан как LPARAM.

Начиная с Windows 8, есть Сенсорный впрыск API, который позволяет генерировать сенсорный ввод для произвольных целей. Обратите внимание, что сенсорный ввод по своей сути более сложен, чем ввод с помощью мыши (из-за размера контактной области, мультитач, нажатия и других факторов), поэтому будьте готовы, что это не так просто, как имитировать ввод с помощью вызова мыши SendInput.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]