Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Оптимизация кода (http://forum.oszone.net/showthread.php?t=135388)

Cuba 21-03-2009 14:27 1070282

Оптимизация кода
 
Решил создать эту потому как самому интересно, что можно поправить в коде, чтобы зделать его более-менее оптимальным.
Для меня это актуально, т.к. я только начал работать с AutoIt.
Для начала, хочу спросить у знающих людей, что можно изменить в этом коде, чтобы он лучше работал или работал на 100% во всех случаях ?
Мне не нравится тут нажатие кнопки мыши по координатам.
Ведь координаты глобальные ? И при разном разрешении экрана будут кликаться разные области экрана ?
Код:

Run("qip8092.exe")
WinWaitActive("Выберите язык установки")
Send("{ENTER}")
WinWaitActive("Установка — QIP 2005","Программа установит QIP 2005 8092")
Send("{ENTER}")
WinWaitActive("Установка — QIP 2005","Выбор папки установки")
Send("{ENTER}")
WinWaitActive("Установка — QIP 2005","Выберите дополнительные задачи")
MouseClick("left", 310, 365, 1, 0)
MouseClick("left", 310, 430, 1, 0)
MouseClick("left", 310, 450, 1, 0)
Send("{ENTER}")
WinWaitActive("Установка — QIP 2005","Скачать и установить QIP.Online")
MouseClick("left", 310, 440, 1, 0)
Send("{ENTER}")
WinWaitActive("Установка — QIP 2005","Программа QIP 2005 установлена")
MouseClick("left", 450, 370, 1, 0)
Send("{ENTER}")


Creat0R 21-03-2009 15:39 1070334

Цитата:

Цитата Cuba
Мне не нравится тут нажатие кнопки мыши по координатам »

Если нажать нужно по кнопкам и птичкам, то используйте ControlClick (классы и идентификаторы элементов см. с помощью инструмента Au3 Info Tool).
А вместо Send("{ENTER}") наверняка можно использовать что-то типа ControlClick("Выберите язык установки", "", "Button1").

amel27 21-03-2009 17:48 1070425

Цитата:

Цитата Cuba
самому интересно, что можно поправить »

если из интереса, то можно так:
Код:

Run("qip8092.exe")

WinWait("[CLASS:TSelectLanguageForm]")
ControlClick("[CLASS:TSelectLanguageForm]","","TNewButton1")

WinWait("[CLASS:TWizardForm]","QIP 2005 8092")
ControlClick("[CLASS:TWizardForm]","","TNewButton1")

WinWait("[CLASS:TWizardForm]","\Program Files\")
ControlClick("[CLASS:TWizardForm]","","TNewButton3")

WinWait("[CLASS:TWizardForm]","Выберите дополнительные задачи")
ControlClick("[CLASS:TWizardForm]","","TNewCheckListBox1","left",1,10,56)
ControlClick("[CLASS:TWizardForm]","","TNewCheckListBox1","left",1,10,120)
ControlClick("[CLASS:TWizardForm]","","TNewCheckListBox1","left",1,10,142)
ControlClick("[CLASS:TWizardForm]","","TNewButton3")

WinWait("[CLASS:TWizardForm]","Скачать и установить QIP.Online")
ControlClick("[CLASS:TWizardForm]","","TCheckBox1")
ControlClick("[CLASS:TWizardForm]","","TNewButton3")

WinWait("[CLASS:TWizardForm]","Программа QIP 2005 установлена")
ControlClick("[CLASS:TWizardForm]","","TNewCheckListBox1","left",1,10,10)
ControlClick("[CLASS:TWizardForm]","","TNewButton3")

...а если из практики, то я бы ставил так:
Код:

qip8092.exe /SILENT /LOADINF="qip8092.inf"
где qip8092.inf:
Код:

[Setup]
Lang=russian
Dir=C:\Program Files\QIP
Group=QIP 2005
NoIcons=0
Tasks=desktopicon

FYI: http://forum.oszone.net/thread-60604.html

Cuba 21-03-2009 18:27 1070453

amel27, именно то, что я и хотел. Большое спасибо, а то я чуток не мог разобраться в синтаксисе ControlClick.
Думаю не стоит ставить статус [решено].
Пусть тема плавает, я может ещё сюда напишу или кто-то другой :)

Creat0R 21-03-2009 23:08 1070669

Цитата:

Цитата Cuba
Думаю не стоит ставить статус [решено] »

Стоит, раз тема решена ;) Если она решена, это не значит что в неё нельзя ничего писать.


Время: 18:17.

Время: 18:17.
© OSzone.net 2001-