Что нового

[Элементы GUI] Нажатие кнопки активного окна, не реагирует.

nikomx

Новичок
Сообщения
4
Репутация
0
Добрый день.
Суть в том что нужно автоматизировать много много телодвижений в цикле, что в принципе реализовано, но есть загвоздка. Скрипт по нажатию одной кнопки в одном диалоговом окне не срабатыват, и пришлось реализовать по маузклик и координаты, однако такое решение не подходит для работы с разными разрешениями экрана. На работе если я запущу скрипт, то дома на широкоэкраннике координаты уже не те, а окно тоже не спозиционирует, оно строго само себя ставит по центру экрана.

Вообщем сейчас код такой:
Код:
;Первая база

Run("C:\mult_so5\copy_up.bat")
Run("C:\mult_so5\Swnd5M.exe")
WinWaitActive("Выбор Базы")
ControlClick("Выбор Базы","Запустить Патч Супер Окнон","ThunderRT6CommandButton5")
Sleep(15000)
$title = WinGetTitle("[active]")
WinWaitActive($title) ;
sleep(1000)
MouseClick( "left",540 ,560, 1 )
Sleep(1000)
MouseClick( "left",25 ,30, 1 )
MouseClick( "left",40 ,145, 1 )
WinWaitActive("Обмен данными с отделами")
MouseClick( "left",590 ,625, 1 ) ;Кнопка обмен, ИМЕННО ЭТА КНОПКА не пашет контролом клик
WinWaitActive($title) ;
MouseClick( "left",10 ,11, 1 ) ;Кнопка системная
Sleep(500)
MouseClick( "left",14 ,135, 1 ) ;Кнопка закрытия
Sleep(1500)

; ******* база 2 - 99

For $i = 1 to 98 Step 1
Run("C:\mult_so5\copy_up.bat")
Run("C:\mult_so5\Swnd5M.exe")
WinWaitActive("Выбор Базы")
Sleep(500)
Send("{DOWN 1}")	;Следующая локальная база
Sleep(500)
ControlClick("Выбор Базы","Запустить Патч Супер Окнон","ThunderRT6CommandButton5")
Sleep(15000)
$title = WinGetTitle("[active]")
WinWaitActive($title)
sleep(1000)
MouseClick( "left",540 ,560, 1 )
Sleep(1000)
MouseClick( "left",25 ,30, 1 )
MouseClick( "left",40 ,145, 1 )
WinWaitActive("Обмен данными с отделами")
MouseClick( "left",590 ,625, 1 ) ;Кнопка обмен, именно эта кнопка не пашет контроломклик
WinWaitActive($title)
MouseClick( "left",10 ,11, 1 ) ;Кнопка системная
Sleep(500)
MouseClick( "left",14 ,135, 1 ) ;Кнопка закрытия
Sleep(1500)
Next


Пробовал нажатие этой кнопки вот так:
Код:
ControlClick("Обмен данными с отделами","Через дискету","TKPanel2")

Скрипт просто висит на выполнении и как будто чего то ждет, но кнопку не нажимает..
Инфа взята из wininfo
Скриншот:
http://floomby.ru/content/osKVrwApd0/
Что посоветуете? Спасибо.
 

VladUs

Скриптер
Сообщения
621
Репутация
181
nikomx [?]
однако такое решение не подходит для работы с разными разрешениями экрана.

Попробуйте использовать опцию
Код:
Opt("MouseCoordMode", 0)

Система отсчета координат указателя мыши в соответствующих функциях - абсолютные или относительные по отношению к текущему активному окну:

0 = относительные координаты активного окна
1 = абсолютные координаты экрана (стандартное значение).
2 = относительные координаты клиентской области активного окна
Вам необходимо брать координаты относительно активного окна
 
Автор
N

nikomx

Новичок
Сообщения
4
Репутация
0
Попробуйте использовать опцию
Код: AutoIt [Выделить]
Opt("MouseCoordMode", 0)
Система отсчета координат указателя мыши в соответствующих функциях - абсолютные или относительные по отношению к текущему активному окну:
Отличная мысль.. Думаю как вариант подойдет))
 
Автор
N

nikomx

Новичок
Сообщения
4
Репутация
0
Что то я недогоняю как правильно воспользоваться в таком случае ControlClick-ом,Вот скрин wininfo этой кнопки которую надо нажать: http://floomby.ru/content/CFpsd9MR60/
Можете подсказать как будет выглядить строка контролклик?
Естественно перед ней использую опцию Opt("MouseCoordMode", 0)
 

VladUs

Скриптер
Сообщения
621
Репутация
181
Для начала в программе wininfo выберите options - Coord mode - Windows
Это для того чтобы программа wininfo сообщала координаты относительно окна
Далее смотрите координаты
>>>> Mouse <<<<
Position: 286, 56 (у Вас будут другие)
Код:
MouseClick( "left",286 ,56, 1 )
 
Автор
N

nikomx

Новичок
Сообщения
4
Репутация
0
Спасибо за оперативную помощь!
Тему можно закрыть.
 
Верх