PDA

Показать полную графическую версию : [решено] Передвинуть курсор на элемент окна


McLotos
09-03-2014, 14:41
Добрый день!
Пишу скрипт, который будет выполнять некоторые вещи пока я буду в отпуске =)
Возникла проблемка, не могу сообразить как заставить Autoit переместить курсор на нужную кнопку в окне программы.
Проблема к в том что кнопка находится в блоке, у блока есть свой Handle, а у самой кнопки нету.
Координаты кнопки внутри этого блока всегда одни и те же. Как навести курсор на кнопку?

Iska
09-03-2014, 16:24
Получить координаты элемента управления. Сдвинуть мышь на эти координаты плюс дельта до нарисованной кнопки. Наподобие (для Windows XP с классической темой):
AutoItSetOption("MustDeclareVars", 1)
AutoItSetOption("MouseCoordMode", 2)

Run("mspaint.exe")

WinWait("[CLASS:MSPaintApp]")
WinActivate("[CLASS:MSPaintApp]")

Local $hPalette = ControlGetHandle("[CLASS:MSPaintApp]", "", "[CLASS:AfxWnd42u; INSTANCE:1]")
Local $aPalettePos = ControlGetPos("[CLASS:MSPaintApp]", "", $hPalette)
MouseMove($aPalettePos[0] + 70, $aPalettePos[1] + 30)
MouseClick("left")

Local $hTools = ControlGetHandle("[CLASS:MSPaintApp]", "", "[CLASS:AfxWnd42u; INSTANCE:2]")
Local $aToolsPos = ControlGetPos("[CLASS:MSPaintApp]", "", $hTools)
MouseMove($aToolsPos[0] + 40, $aToolsPos[1] + 40)
MouseClick("left")

Local $hEditArea = ControlGetHandle("[CLASS:MSPaintApp]", "", "[CLASS:Afx:1000000:8; INSTANCE:1]")
Local $aEditArea = ControlGetPos("[CLASS:MSPaintApp]", "", $hEditArea)
MouseMove($aEditArea[0] + 100, $aEditArea[1] + 100)
MouseClick("left")


http://img560.imageshack.us/img560/1436/n92.gif

McLotos
09-03-2014, 19:29
Не совсем понял. Т.е. нужно получить координаты блока, в котором находится нужная кнопка?

Iska
09-03-2014, 21:34
Т.е. нужно получить координаты блока, в котором находится нужная кнопка? »
Координаты элемента управления, от которого будете «танцевать» дальше. Затем смещение от этих координат — посмотрите на приведённый выше код примера и рисунок с демонстрацией такого рода «кликов» по областям «Палитра» и «Инструменты» в Microsoft Paint.




© OSzone.net 2001-2012