sendmouse - Делает клик в клиентских координатах окна КОНТРОЛА на который указывает указатель.
Синтаксиc:
CODE:
sendmouse (LEFT, 200, 250, wind);
Третий и четвертый параметры указывают на клиентские координаты КОНТРОЛА на который указывает указатель wind.
Как получить указатель на контрол:
Пример получения указателя на клиентскую часть окна ПАИНТ.
Наводим мышь на поле для рисования, жмем CTRL+SHIFT+S. В верхней части шпиона находится указатель на окно программы ПАИНТ. Необходимый нам указатель на контрол в котором непосредственно происходит рисование находится в нижней части.
Для всех функций начинающихся на send надо получать указатели не на главное окно, а на контрол (если он есть появляется при нажатие CTRL+SHIFT+S). То же самое касается sendkey, sendkeydown и sendkeyup.
=================================================
sendmousedown (LEFT, 200, 250, wind) - нажимает левую кнопку мыши. RIGHT правую, MIDDLE среднюю.
sendmouseup (LEFT, 200, 250, wind) - отпускает левую кнопку мыши. RIGHT правую, MIDDLE среднюю.
sendmousedbl (LEFT, 200, 250, wind) - двойной клик левой кнопкой мыши. RIGHT правой, MIDDLE средней.
sendmousemove (200, 250, wind) - перемещение мыши в указанные клиентские координаты окна.
sendmousetransfer(LEFT, 200, 250, 300, 350, 0.02, wind) - перетаскивание с зажатой левой кнопкой, RIGHT правой, MIDDLE средней, -1 не нажатые.
=================================================
Пример рисования в свернутом окне паита:
CODE:
win w=window (-1, "Afx:00000000FFB90000:8", window ("Безымянный - Paint", "MSPaintApp", -1));//Получить указатель на поле для рисования в Паинт
sendmousetransfer(LEFT, 200, 200, 250, 250, 0.02, w);//Провести линию с зажатой левой кнопкой мыши с клиентских координат 200, 200 в 250, 250.
sendmousetransfer(LEFT, 200, 200, 250, 250, 0.02, w);//Провести линию с зажатой левой кнопкой мыши с клиентских координат 200, 200 в 250, 250.
=================================================
А вот к примеру в браузере Мозила один указатель на главное окно и достаточно получить указатель на главное окно в верхней части шпиона. Координаты по которым будут идти клики можно узнать наведя мышь на нужную ссылку и нажав CTRL+SHIFT+S. Координаты для клика берем в поле Мышь в клиентской части окна.
======================================================
Для прокрутки ролика мыши необходимо первым параметром указать WHEEL
Прокрутка в не активном окне:
В данном случае третьим параметром надо давать указатель на контрол в котором есть скролл, так как сообщение передается скролу, а не главному окну.
CODE:
sendmouse(WHEEL, -2, w);
=============================================
Пояснение по поводу указателей.
На примере блокнота.
Блокнот имеет главное окно и контрол EDIT , который расположен на главной форме и в котором есть сролл.
В шпионе Кибор вверху будет указатель на главную форму, внизу на контролл.
Для mouse надо давать указатель на главную форму. Для sendmouse на контролл.
CODE:
win w=window (-1, "Notepad", -1); // Указатель на главную фому
mouse(WHEEL, -2, 1, w);
pause(1000);
mouse(WHEEL, -2, 1, w);
pause(1000);
CODE:
win w=window (-1, "Edit", window (-1, "Notepad", -1)); // Указатель на контролл
sendmouse(WHEEL, -2, w);
pause(1000);
sendmouse(WHEEL, -2, w);
pause(1000);