используй mouse_event() или лучше SendInput()
VOID mouse_event( DWORD dwFlags,
DWORD dx,
DWORD dy,
DWORD dwData,
ULONG_PTR dwExtraInfo
);
UINT SendInput( UINT nInputs,
LPINPUT pInputs,
int cbSize
);
---
> Суть проблемы. Пишу бота для игры в шахматы, точнее уже > написал для одной программы, а теперь адаптирую для другой. > Этой другой оказалась игра на рамблере: > http://games.rambler.ru/game/chess/. > > Вот этот код здесь работать не хочет: > > SendMessage(m_hwndBoard, WM_LBUTTONDOWN, 0,
> MAKELONG(xFrom, yFrom));
> SendMessage(m_hwndBoard, WM_MOUSEMOVE, 0,
> MAKELONG(xTo, yTo));
> SendMessage(m_hwndBoard, WM_LBUTTONUP, 0,
> MAKELONG(xTo, yTo));
> ---
> хотя в другой программе работал. Здесь же, он поднимает > шахматную фигуру, перемещает её, но опускать на доску не > хочет. С чем это может быть связано? > > Я наконец-то внял наставлениям amirul'а > и HandleX и разобрасля с программой > Spy++ (классная вещь!). Она выдаёт вот такую > последовательность сообщений, когда я работаю с мышью > "легально" > > WM_MOUSEACTIVATE
> WM_MOUSEACTIVATE
> WM_SETCURSOR
> WM_SETCURSOR
> WM_LBUTTONDOWN
> WM_MOUSEMOVE
> ...
> WM_MOUSEMOVE
> WM_LBUTTONUP
> WM_SETCURSOR
> WM_SETCURSOR
> ---
> По аналогии с этим сформировал свои сообщения через > SendMessage, но желаемого результата так и недобился. > > Если кратко вопрос в следующем: как поднятую в рамблере > шахматную фигуру поставить туда, куда я хочу?
|