Войти

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


Pozia
18-02-2009, 23:43
Подскажите как правильно записать скрипт по установке какой нибудь проги с помощью нажатий по кнопкам в скрытых самим же аутлут окнам.

beve
19-02-2009, 00:05
Вот на этом сайте Sanja Alone выложил скрипты по автоустановке многих прог, посмотри:
http://sanjaalone.h15.ru/au3.php

Pozia
21-02-2009, 22:07
чет сложные для меня скрипты от Sanja Alone. Может кто нибудь может более доступно на примере нажатия по одной кнопке показать как это делается?

266903582
21-02-2009, 23:33
Pozia, if WinExists('VMware Workstation','By restoring this snapshot, the current state will be lost.') then ControlClick('VMware Workstation','By restoring this snapshot, the current state will be lost.','Button13')
или просто так:
ControlClick('VMware Workstation','By restoring this snapshot, the current state will be lost.','Button13')

beve
21-02-2009, 23:37
чет сложные для меня скрипты от Sanja Alone.
Конечно, может и сложны. Но если попростому делать, то может быть и нестабильно. Но, для начала выбери какую то маленькую програмку, и начни свой скрипт с запуска программы установки и потом если непонятно будет, на каком то шаге, например, как убрать или поставить чекбокс, или еще что то то ссылку на программу напиши и хоть кусок твоего кода, так и тебе учится будет понятливей и тем кто сможет подсказать тоже будет понятно, что не понятно тебе, или вам.

Pozia
22-02-2009, 00:55
266903582, это же обычный клик по активному окну. Мне нужно вызвать окно программы, скрыть его и щелкать по клавишам уже скрытого окна. В справочнике аутлут об этом прочел но не совсем могу понять КАК это реализовать.

Вот допустим часть скрипта Создания подключения к интернету:

#NoTrayIcon
;Запуск Мастера подключения к интернету
Run ("rundll32.exe netshell.dll,StartNCW")
WinWaitActive ( "Мастер новых подключений" )
ControlClick ( "Мастер новых подключений", "", 12324 )
WinWaitActive ( "Мастер новых подключений" )
ControlClick ( "Мастер новых подключений", "", 22125 )
ControlClick ( "Мастер новых подключений", "", 12324 )
WinWaitActive ( "Мастер новых подключений" )
ControlClick ( "Мастер новых подключений", "", "&Установить подключение вручную" )
ControlClick ( "Мастер новых подключений", "", "&Далее >" )
WinWaitActive ( "Мастер новых подключений" )
ControlClick ( "Мастер новых подключений", "", "Через &обычный модем" )
ControlClick ( "Мастер новых подключений", "", "&Далее >" )
WinWaitActive ( "Мастер новых подключений" )
Send ( "Beltelecom" )

...

Вот как скрыть эти моргающие окна при запуске скрипта?

beve
22-02-2009, 14:46
Мне нужно вызвать окно программы, скрыть его и щелкать по клавишам уже скрытого окна. В справочнике аутлут об этом прочел но не совсем могу понять КАК это реализовать.
Если тебе саму суть то вот:
#NoTrayIcon
;Запуск Мастера подключения к интернету
Run ("rundll32.exe netshell.dll,StartNCW")
WinWaitActive ( "Мастер новых подключений" )
WinSetState ( "Мастер новых подключений", "", @SW_HIDE )
ControlClick ( "Мастер новых подключений", "", 12324 )
WinWaitActive ( "Мастер новых подключений" )
ControlClick ( "Мастер новых подключений", "", 22125 )
ControlClick ( "Мастер новых подключений", "", 12324 )
WinWaitActive ( "Мастер новых подключений" )
ControlClick ( "Мастер новых подключений", "", "&Установить подключение вручную" )
ControlClick ( "Мастер новых подключений", "", "&Далее >" )
WinWaitActive ( "Мастер новых подключений" )
ControlClick ( "Мастер новых подключений", "", "Через &обычный модем" )
ControlClick ( "Мастер новых подключений", "", "&Далее >" )
WinWaitActive ( "Мастер новых подключений" )
ControlSend ( "Мастер новых подключений", "", "[CLASS:Edit; INSTANCE:1]","Beltelecom" ) ;при отправке текста в скрытых окнах нужно использовать такое
WinSetState ( "Мастер новых подключений", "", @SW_SHOW )

P.S. Ты пишеш - аутлут, но лучше все таки, чтоб понятливей для всех писать Автоит.

266903582
22-02-2009, 15:01
Pozia, controlclick работает не только в активных окнах...

Pozia
22-02-2009, 15:12
beve, супер. оказывается все легко. А вот самое первое окно есть возможность скрыть? Аль это уже из мира фантастики?

Pozia
22-02-2009, 19:02
вот пытаюсь сделать автоустановку MathType. не совсем выходит. Текст скрипта:

#NoTrayIcon run ('setup.exe')
WinWaitActive ('Установка 6.0c','','')
WinSetState ('Установка 6.0c','',@SW_HIDE)
ControlClick ('Установка 6.0c','',21)
ControlClick ('Установка 6.0c','',101)
ControlSend ('Установка 6.0c','','[CLASS:Edit; INSTANCE:1]','{end}')
ControlSend ('Установка 6.0c','','[CLASS:Edit; INSTANCE:1]','{backspace 35}')
ControlSend ('Установка 6.0c','','[CLASS:Edit; INSTANCE:1]','Pozia')
ControlClick ('Установка 6.0c','', 103)
ControlSend ('Установка 6.0c','','[CLASS:Edit; INSTANCE:2]','{end}')
ControlSend ('Установка 6.0c','','[CLASS:Edit; INSTANCE:2]','{backspace 35}')
ControlSend ('Установка 6.0c','','[CLASS:Edit; INSTANCE:2]','Pozia')
ControlClick ('Установка 6.0c','', 105)
ControlSend ('Установка 6.0c','','[CLASS:Edit; INSTANCE:3]','{end}')
ControlSend ('Установка 6.0c','','[CLASS:Edit; INSTANCE:3]','{backspace 35}')
ControlSend ('Установка 6.0c','','[CLASS:Edit; INSTANCE:3]','Pozia')
ControlClick ('Установка 6.0c','', 107)
ControlSend ('Установка 6.0c','','[CLASS:Edit; INSTANCE:4]','{end}')
ControlSend ('Установка 6.0c','','[CLASS:Edit; INSTANCE:4]','{backspace 35}')
ControlSend ('Установка 6.0c','','[CLASS:Edit; INSTANCE:4]','XXXXXXX-XXXXXX-XXXXX')
ControlClick ('Установка 6.0c','',112)
ControlClick ('Установка 6.0c','',22)
WinWaitActive ('Выполнение Установка 6.0c','','')
WinSetState ('Выполнение Установка 6.0c','', @SW_HIDE)
WinWaitActive ('Выбор языка','','')
WinSetState ('Выбор языка','',@SW_HIDE)
ControlClick ('Выбор языка','',1)
WinWaitActive ('Завершение установки','','')
WinSetState ('Завершение установки','',@SW_HIDE)
ControlClick ('Завершение установки','', 25)
ControlClick ('Завершение установки','', 1)
Exit

Не работает он в следующем: когда появляется последнее окно Завершение установки в котором нужно поставить птичку на согласие и нажать Готово то ничего не происходит пока я не нажму ALT+Tab и не выберу там MathType. Тогда появляется окно и скрипт дальше отробатывает. Опытно установил что мешает выполнению скрипта выделеная строка. Без нее все работает. В чем может быть причина?

266903582
22-02-2009, 22:04
Pozia, обильное использование функции WinWaitActive не способствует стабильной работе скрипта. Попробуй заменить на winwait. В таком случае, даже если окно неактивно, нажатие произойдет.
P. S. Я давно использую для таких целей 2 функции, которые под разные нужды на ходу можно дополнять:
для нажатия на кнопку в окне просто пиши cl("здесь все необходимое для функции controlclick") Программа дождется появления окна и нажмет кнопку.
Func wa($tx1, $tx2)
While WinExists($tx1, $tx2)=0
Sleep(1)
WEnd
EndFunc
Func cl($tx1, $tx2,$classn)
wa($tx1, $tx2)
ControlClick($tx1, $tx2,$classn)
EndFunc

Пример:
cl('Setup - AoADVDCreator','Completing the AoADVDCreator Setup Wizard','TNewButton4')

Func wa($tx1, $tx2)
While WinExists($tx1, $tx2)=0
Sleep(1)
WEnd
EndFunc
Func cl($tx1, $tx2,$classn)
wa($tx1, $tx2)
ControlClick($tx1, $tx2,$classn)
EndFunc

beve
23-02-2009, 01:43
вот пытаюсь сделать автоустановку MathType. не совсем выходит. Текст скрипта:
Ты ссылку конечно не дал... Вот у меня времени полно, я скачал MathType 6.0c, но ни русская версия ни английская с твоим кодом не совпадает...А без того чтоб посмотреть, сам понимаеш никто не подскажет.

Pozia
23-02-2009, 02:53
beve, извиняюсь. Скрипт подходит к шестой версии. Предварительно нужно ее распоковать в папку и в файле setup.inf поменять строки ;no_background = 0 и ;InstallNoDlg = 1 на no_background = 1 и InstallNoDlg = 1 соответственно. Это уберет несколько окон. Скрипт выполнить в распакованной папке

beve
23-02-2009, 14:17
Чтоб твой скрипт работал, нужно
WinWaitActive ('Завершение установки','','')
заменить на
WinWait('Завершение установки','','')

Pozia
23-02-2009, 14:42
beve, так просто на деле. Мог я и сам догодаться конечно же. Сама команда дает подсказку. :)




© OSzone.net 2001-2012