Имитация наведения мыши на любой элемент пользовательского интерфейса для любого приложения Windows

Для контекста моя миссия - имитировать все взаимодействия / вводы мыши для определенного дескриптора окна без того, чтобы мышь фактически находилась над указанным окном.

Я очень далеко продвинулся с SendMessageA() и отправкой WM_LBUTTONDOWN и UP и R-версии этого для щелчка правой кнопкой мыши.

Пример SendMessageA(m_TargetWindow, WM_RBUTTONUP, MK_RBUTTON, MAKELPARAM(x,y)); отлично подходит для отправки правой кнопки вверх в местоположении x, n окна.

Тем не менее, в первую очередь, если моя миссия невозможна для всех взаимодействий с мышью, включая имитацию перетаскивания и, в данном случае, зависания (и это конец), то это сэкономит мне много времени.

Если это возможно, я продолжу выяснять остальное, но сейчас наведение более сложное, чем другие команды отправки сообщений (прокрутка тоже есть / была, но пока обошлась). Чтение документации действительно указывает на некоторые нюансы, такие как но я еще не trackmouseevent,понял этого. Я также не уверен, что Hover - правильный способ думать об этом, поскольку это может быть тип сделки с вводом / выходом мыши.

Это то, что я пробовал до сих пор.

      SendMessageA(m_TargetWindow, WM_MOUSEHOVER, MK_LBUTTON, MAKELPARAM(x,y));

а также

      TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(TRACKMOUSEEVENT);
tme.dwFlags = TME_HOVER;
tme.hwndTrack = m_TargetWindow;
tme.dwHoverTime = HOVER_DEFAULT;

SendMessageA(m_TargetWindow, WM_MOUSEHOVER, MK_LBUTTON, MAKELPARAM(x,y));

Идея состоит в том, что в местоположениях x и y окна он будет имитировать событие зависания для m_TargetWindow.

0 ответов

Другие вопросы по тегам