[Архив - Часть 1.1] AutoIt скрипты

Ответить
 • Просмотры: 13
Аватара пользователя
Madcap

Re: [Архив - Часть 1.1] AutoIt скрипты

Сообщение Madcap »

Ребята, все получилось!!!

ОГРОМНОЕ ВАМ СПАСИБО!!!
Аватара пользователя
godoo

Re: [Архив - Часть 1.1] AutoIt скрипты

Сообщение godoo »

Мой первый скрипт!

Установка FAR Manager, можете меня поздравить. И не говорите, что Фар можно как то проще поставить. Если просто разархивировать его в соответствующию директорию получится, во-первых, отсутствие ярлыков, во-вторых, в путях его системных не будет... В общем этот вариант самый оптимальный.

Вот текст:

BlockInput(1)

Run("Far1705.exe")

WinWait("FAR version 1.70 beta 5","",0)

Sleep(1000)

Send("{TAB}")

Send("{ENTER}")

WinWait("The FAR manager SETUP","&Folder to install FAR",0)

Send("{ENTER}")

WinWait("The FAR manager SETUP","Done",0)

Send("{ENTER}")

WinClose("FAR manager")

BlockInput(0)
Аватара пользователя
Sanja Alone

Re: [Архив - Часть 1.1] AutoIt скрипты

Сообщение Sanja Alone »

Izvr


Цитата:



во-первых, отсутствие ярлыков



Я этот вопрос решил просто - у меня Far со всеми плагинами ставится из rarsfx-архива. Т.о., можно создавать стандартные ярлыки и запускать до/после извлечения команду/файл на выполнение (в данном сл. - импорт настроек в реестр regedit /S settings.reg, где settings.reg=FarSave1.reg+FarSave2.reg).




Цитата:



во-вторых, в путях его системных не будет...



Это ты о чем? ВСЕ свои настройки Far хранит в реестре. Файлы SaveSettings.bat и RestoreSettings.bat в каталоге Far-а ты видел? Эти файлики сохраняют и восстанвливают настройки Far-а (в/из файлы/файлов FarSave1.reg и FarSave2.reg). А в системную переменную Path Фар себя вообще не пишет, да и новых переменных не создает.



Теперь по сути.

В скриптах, вместо WinWait лучше использовать WinWaitActive или связку WinWait + WinActivate. Во-первых, это избавляет от необходимости угадывания времени Sleep-а, и, во-вторых, позволяет избежать проблем с последующим несвоевременным нажатием клавиш.

И еще одно замечание: не нужно в функциях ожидания окон задавать нулевые таймауты. Смысл таймаута такой - ждать X окно не более Y секунд и в любом сл. идти дальше. При таймауте=0 будет сделана одна проверка на наличие искомого окна и сразу будет выполнена следующая функция, что также может вызвать проблемы, т.к. посылаемая комбинация клавиш передастся не в активный элемент окна, а х.з. куда (по ум. пауза для оконных операций у AutoIt составляет всего 250 мс). Для окон установщика Фара этого с головой хватает, но ведь может попасться приложение и с загаженными всяким мусором, медленно появляющимися окнами.



Установка Far-а:



Код:

Код: Выделить всё

AutoItSetOption("TrayIconHide", 1)
BlockInput ( 1 )
Run ( 'Far1705.exe' )
WinWaitActive ( 'FAR version' )
ControlClick ( 'FAR version', '', 'Button2' )
WinWaitActive ( 'The FAR manager SETUP', '&Folder to install FAR' )
;поставить галку "Associate FAR with RAR, ARJ, LZH, ZIP, HA, CAB and TGZ"
ControlClick ( 'The FAR manager SETUP', '&Folder to install FAR', 'Button4' )
;начать установку
ControlClick ( 'The FAR manager SETUP', '&Folder to install FAR', 'Button8' )
WinWaitActive ( 'The FAR manager SETUP', 'Installation completed' )
Send ( '{ENTER}' )
;перенос ярлыков в более удобное место
DirCopy ( @ProgramsCommonDir & '\FAR manager', @ProgramsCommonDir & '\Файл-менеджеры\FAR manager', 1 )
DirRemove ( @ProgramsCommonDir & '\FAR manager', 1 )
BlockInput ( 0 )
Аватара пользователя
Izvr

Re: [Архив - Часть 1.1] AutoIt скрипты

Сообщение Izvr »

Sanja Alone


Цитата:



Это ты о чем? ВСЕ свои настройки Far хранит в реестре. Файлы SaveSettings.bat и RestoreSettings.bat в каталоге Far-а ты видел? Эти файлики сохраняют и восстанвливают настройки Far-а (в/из файлы/файлов FarSave1.reg и FarSave2.reg). А в системную переменную Path Фар себя вообще не пишет, да и новых переменных не создает.



Ну а как тогда объяснить то, что я могу набрать в Run far и он у меня откроется? Я, конечно, допускаю возможность положить одноименный ярлык куда-нибудь в C:\windows, но мы не знаем всего того, что вшили разработчики в свой installer(так как они его к примеру залочили), так что SFX как то не очень надежно получается...


Цитата:



В скриптах, вместо WinWait лучше использовать WinWaitActive или связку WinWait + WinActivate. Во-первых, это избавляет от необходимости угадывания времени Sleep-а, и, во-вторых, позволяет избежать проблем с последующим несвоевременным нажатием клавиш.



Спасибо, учту...


Цитата:



И еще одно замечание: не нужно в функциях ожидания окон задавать нулевые таймауты. Смысл таймаута такой - ждать X окно не более Y секунд и в любом сл. идти дальше. При таймауте=0 будет сделана одна проверка на наличие искомого окна и сразу будет выполнена следующая функция, что также может вызвать проблемы, т.к. посылаемая комбинация клавиш передастся не в активный элемент окна, а х.з. куда (по ум. пауза для оконных операций у AutoIt составляет всего 250 мс). Для окон установщика Фара этого с головой хватает, но ведь может попасться приложение и с загаженными всяким мусором, медленно появляющимися окнами.



а "0" по моему бесконечность означает!? так что это вполне оправдано, но может быть я и не прав...
Аватара пользователя
Sanja Alone

Re: [Архив - Часть 1.1] AutoIt скрипты

Сообщение Sanja Alone »

Izvr


Цитата:



Ну а как тогда объяснить то, что я могу набрать в Run far и он у меня откроется?



Да уж, давно я дедовским способом Far не ставил... Сейчас проверил на вирт. машине - действительно он добавляет свой путь в Path. Мне только не ясно одно - зачем? Ведь если запустить Фар из Run-а, то на него без боли смотреть просто невозможно и все юзеры (любящие комформ) запускают Фар с пом. ярлыка, к-рый редактируют "под себя". Но если ты экстремал, то можешь добавлять путь Far-а к Path-у с пом. включения в архив маленькой утилки
setenv.exe
(35 328 байт) и батника примерно такого содержания:



Код:

Код: Выделить всё

@echo off
copy /y Far.lnk "%AllUsersProfile%\Application Data\Microsoft\Internet Explorer\Quick Launch\Far.lnk" > nul
regedit /S settings.reg
setenv -m PATH %PATH%;"%ProgramFiles%\Far"
exit

(Far.lnk[/i] - "настроенный" ярлык, к-рый также нужно положить в архив).

У меня из подобного файлика (ес-но, без setenv) еще и шрифт в Винду добавляется для понимания Фаром укр. буковок.

И пусть тебя не беспокоят "лишние" файлы в каталоге установленного Фара. Если Фар придется когда-нибудь удалять (в сязи с острым приступом тоталкоммандеризма или еще чего-то пострашнее) то заставить Фар удалить и эти файлы можно просто дописав их имена в файл Uninstall.lst в каталоге Фара.




Цитата:



а "0" по моему бесконечность означает!?



Бесконечность означает отсутствие данного параметра, а 0 означает именно то, что я написал выше.
Аватара пользователя
Madcap

Re: [Архив - Часть 1.1] AutoIt скрипты

Сообщение Madcap »

Sanja Alone

Ты неправ, 0 означает бесконечность.

Попробуй запусти 2 нехитрых скрипта:





Код:

Код: Выделить всё

WinWait ("Название окна","Текст", 1)
Sleep (300)
MsgBox ( 0, "12345", "12345")

и





Код:

Код: Выделить всё

WinWait ("Название окна","Текст", 0)
Sleep (300)
MsgBox ( 0, "12345", "12345")
Аватара пользователя
Izvr

Re: [Архив - Часть 1.1] AutoIt скрипты

Сообщение Izvr »

Цитата:



Да уж, давно я дедовским способом Far не ставил... Сейчас проверил на вирт. машине - действительно он добавляет свой путь в Path. Мне только не ясно одно - зачем? Ведь если запустить Фар из Run-а, то на него без боли смотреть просто невозможно и все юзеры (любящие комформ) запускают Фар с пом. ярлыка, к-рый редактируют "под себя". Но если ты экстремал, то можешь добавлять путь Far-а к Path-у с пом. включения в архив маленькой утилки setenv.exe (35 328 байт) и батника примерно такого содержания:



Я создаю решение не для себя, а для работы. Так что мне пофиг, кому надо настроят. А вообще я пользуюсь консолькой, поэтому набрать far для меня проще, чем тыкаться в ярлык. За утилитку спасибо.
Аватара пользователя
Sanja Alone

Re: [Архив - Часть 1.1] AutoIt скрипты

Сообщение Sanja Alone »

Madcap

Да, так и есть: WinWait ("Название окна","Текст", 0) дает такой же результат, как и WinWait ("Название окна","Текст"). Ну что тут сказать - такие выкрутасы должны быть описаны в справке. А там только сказано, что это "Timeout in seconds" и никаких ремарок (Remarks - None). Камень в огород писателей справки к AutoIt.
Аватара пользователя
ched3n

Re: [Архив - Часть 1.1] AutoIt скрипты

Сообщение ched3n »

to all



Такая командочка:



Код:

Код: Выделить всё

if WinWaitActive ( "Окно1", "") or ( "Окно2", "") then
...

Неработает оператор or. Если появляется "Окно1" - все ОК скрипт продолжает выполняться.

Если появляется "Окно2" - то скрипт висит.

Что я делаю неправильно?
Ответить

Вернуться в «AutoIt»