Имитация наведения мыши на любой элемент пользовательского интерфейса для любого приложения 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.