Войти

Показать полную графическую версию : [Архив - Часть 1.1] AutoIt скрипты


Страниц : 1 [2] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Sanja Alone
26-03-2005, 03:46
Aspirine
При компиляции, получается *.exe файл с тем же, что и у *.au3 именем.
В твоем случае итоговое имя совпадает с именем файла-установщика самой проги VirtualCD и он перезаписывается поверх.
Просто смени имя *.au3 файла, скажем на autoit_vcd.au3, тогда при компиляции получишь autoit_vcd.exe.

А вообще, на кой тебе этот VirtualCD? Тот же Alcohol прекрасно монтирует его файлы *.vcd и *.000 (только при их добавлении, в списке нужно выбрать "все файлы", а не "все поддерживаемые образы")
А если нужно создавать образы CD/DVD самостоятельно добавляя/удаляя файлы/каталоги, то можно воспользоваться UltraISO. К тому же, UltraISO понимает наверное все форматы образов, и может их конвертировать в iso, nrg, ccd, bin.

P.S. Я когда-то тоже юзал VCD (v4 и немного v5), но тогда это был чуть-ли не единственный нормальный эмулятор.
Все течет, все меняется... (C) не мое


----------------------------


type
В твоем варианте посылки строкой символов, на слабой машине TAB может просто не успеть перевести фокус (если не увеличить "SendKeyDelay") на другое поле и будет бяка.
IMHO, правильнее (и быстрее) будет не симулировать нажатия клавиш, а непосредственно ввести данные в соотв. поле. В какое? - посмотри с пом. AutoIt Window Info.
Вот, как пример (установка Ultra ISO v7.5.1.965):

;скрыть в системной панели индикатор AutoIt
AutoItSetOption("TrayIconHide", 1)
;блокируем мышь и клаву
BlockInput ( 1 )
;запуск установки в тихом режиме
RunWait ( 'uiso75me-s.exe /VERYSILENT /SP-' )
;запуск проги для появления диалога регистрации
Run ( @ProgramFilesDir & '\UltraISO\UltraISO.exe' )
WinWait ( 'Добро пожаловать' )
WinActivate ( 'Добро пожаловать' )
ControlClick ( 'Добро пожаловать', '', 'TButton4' )
WinActivate ( 'Регистрация' )
;ввод рег. данных
ControlSetText ( 'Регистрация', '', 'TEdit4', 'Имя регистрации' )
ControlSetText ( 'Регистрация', '', 'TEdit5', 'хххх' )
ControlSetText ( 'Регистрация', '', 'TEdit3', 'хххх' )
ControlSetText ( 'Регистрация', '', 'TEdit2', 'хххх' )
ControlSetText ( 'Регистрация', '', 'TEdit1', 'хххх' )
ControlClick ( 'Регистрация', '', 'TButton2' )
WinWaitActive ( 'Подсказка' )
Send ( '{ENTER}' )
WinWaitClose ( 'Подсказка' )
Sleep ( 50 )
;удаление с раб. стола, и перенос ярлыков в более удобный каталог
FileDelete ( EnvGet("USERPROFILE") & '\Рабочий стол\UltraISO.lnk' )
DirCopy ( EnvGet("ALLUSERSPROFILE") & '\Главное меню\Программы\UltraISO', EnvGet("ALLUSERSPROFILE") & '\Главное меню\Программы\CD и DVD утилиты\UltraISO', 1 )
DirRemove ( EnvGet("ALLUSERSPROFILE") & '\Главное меню\Программы\UltraISO', 1 )
;снимаем блокировку мыши и клавы
BlockInput ( 0 )

Есть еще один плюс такого подхода - никакие автопереключатели раскладки (Punto Switcher и т.п.) не испортят ввод серийников.

Aspirine
26-03-2005, 21:20
Sanja Alone
Огромное спасибо!!!!!
Всё прекрасно заработало. Я сам нелавно начал изучать autoit крипты, поэтому ошибаюсь на лёгком и часто...
Насчёт VirtualCD. Я диск другу делаю, котрый в компах ни буи-бум, и не желает учиться работать с другими прогами(он до сизх пор пользуется v4.3 если не ошиюбаюсь..) Сам я ЮЗАЮ АЛКОГОЛЬЧИК.

Sanja Alone
27-03-2005, 01:27
Aspirine

Всегда рад помочь.
А юзать Autoit я тоже недавно начал - около недели назад (да еще сдуру с версии 2.64). Потом пришлось по-быстрому переписать готовые скрипты под версию 3.1.0. Правда, конвертер немного помог :-) Сегодня поеду знакомому винду ставить - посмотрю на работу своего unattended-сидюка на реальной, а не вирт. машине...

Vadikan
04-05-2005, 02:18
Вопрос к специалистам по AutoIt. Допустим, мне нужно изменить некую настройку в программе. Настройка выставляется при помощи чекбокса. Я не знаю отмечен чекбокс или нет, т.к. некоторые юзеры могли его отметить. Можно ли при помощи AutoIt выполнить проверку (отмечен или нет) и соответственно отметить чекбокс только в случае, если он не отмечен?

piterpen
04-05-2005, 13:49
вышла в прошлом месяце AutoIt v3.1.1
http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe

русская справка
http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/russian-v3.0.102.zip

jurikorn
05-05-2005, 19:14
Vadikan.
Можно. Autoit Это позволяет

ControlCommand ( "title", "text", controlID, "command", "option" )

option:
IsChecked, "" (вернуть 1, если Button отмечена)
Check, "" (отметить radio или Button)
UnCheck, "" (снять отметку radio или Button)

Vadikan
05-05-2005, 22:07
jurikorn
Спасибо! Видимо придется мне разбираться с AutoIt (а так лень было это делать ;-), если не найду другого решения своей задачи...

Vadikan
07-05-2005, 03:48
Вникнув в проблему детальнее я не вижу как мне определить ControlID в моем окне. Это Word 2002, окно Tools | Options. Похоже все эти чекбоксы не имеют индивидуальных ControlID.

Через реестр, похоже, тоже не вариант, т.к. regshot отслеживает такой ключ [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\9040210900063D11C8EF00054038389C\Usage] на разных машинах скорее всего набор цифр будет другим... Вообще, это не столько автоматическая установка, сколько автоматизация процесса настройки после установки, которую проводил не я.

VelDmi
06-06-2005, 09:54
Как определить Имя компьютера или его IP адрес?
С помощью _GetIP из справки возвращается значение -1.

jurikorn
06-06-2005, 12:49
Существуют макрокомманды:
@IPAddress1
IP адрес первого сетевого адаптера. Может вернуть и просто 127.0.0.1.
@IPAddress2
IP адрес второго сетевого адаптера. Равен 0.0.0.0, если отстутствует.
@IPAddress3
IP адрес третьего сетевого адаптера. Равен 0.0.0.0, если отстутствует.

@ComputerName
Сетевое название ПК.

Sanja Alone
12-06-2005, 05:00
Тут кто-то интересовался автоустановкой Lingvo. Я иногда юзаю этот словарик, ну и решил замутить скрипт автоустановки для своего Unattended DVD-юка.

Для автоустановки потребуются:
1. Образ первого сидюка Lingvo 10 Multilingual - LV10ML.iso (тупо скопировать содержимое сидюка в какой-либо каталог на автоустановочном CD/DVD и запустить setup.exe не получится - потребует вставить родной диск; с образа все работает)
2. Образ установочной дискеты Lingvo - ling10me_flp.ima (в zip-е всего-то 2Кб, но немогу прикрепить - меня назовут пиратом и заклеймят позором :( )
3. Virtual Floppy Driver некоего Kenji Kato - (нужны 2 файла vfd.exe и vfd.sys)
4. Предварительно установленный и 1 раз запускавшийся Alcohol 120% или DaemonTools с хотя бы одним вирт. приводом в системе
5. Нижеприведенный скрипт
(Все файлы должны лежать в одном каталоге, 2 файла vfd - в подкаталоге vfd)
;Перед запуском этого скрипта, даже если Алкоголь уже установлен, его (Алкоголь)
;нужно один раз запустить для применения параметров виртуального привода
;В сл. применения DT, также требуется его запуск и установка в систему хотя бы одного вирт. привода
;(нажать ПКМ на иконке DT в трее и выбрать "set number of devices" - "1 drive")
;
;скрыть в системной панели индикатор AutoIt
AutoItSetOption("TrayIconHide", 1)
AutoItSetOption("SendKeyDelay", 20)
;блокируем мышь и клаву
BlockInput ( 1 )
;Объявление переменных
;$i - счетчик, используемый в цикле определения буквы виртуального привода
;$virtdrv - маркер (будем устанавливать в 0, если исп-ся DaemonTools и в 1 в случае применения Alcohol-я)
;$daemondir - каталог, куда установлен DaemonTools (без обратного слэша в конце)
;(присваиваем переменной значение, к-рое соотв. пути Демона по умолчанию)
;$alcoholdir - каталог, куда установлен Алкоголь (без обратного слэша в конце)
;(присваиваем переменной значение, к-рое соотв. пути Алкоголя по умолчанию)
Local $i, $virtdrv, $alcoholdir=@ProgramFilesDir & '\Alcohol Soft\Alcohol 120', $daemondir=@ProgramFilesDir & '\D-Tools'
;Проверяем какой эмулятор установлен и монтируем образ Lingvo в первый привод установленного эмулятора
;Если не один не установлен - выходим из скрипта с сообщением о необходимости установки эмулятора
If FileExists ( $daemondir & '\daemon.exe' )=1 Then
$virtdrv=0
;Демонтируем текущий образ из первого вирт. привода Демона.
;(это необязательно)
RunWait ( $daemondir & '\daemon.exe -noicon -unmount 0' )
;Монтируем образ Lingvo на первый виртуальный CD/DVD-привод
Run ( $daemondir & '\daemon.exe -noicon -mount 0,"' & @ScriptDir & '\LV10ML.iso"' )
ElseIf FileExists ( $alcoholdir & '\AxCmd.exe' )=1 Then
$virtdrv=1
;Демонтируем текущий образ из первого вирт. привода Алкоголя.
;(это необязательно)
RunWait ( $alcoholdir & '\AxCmd.exe 1: /U' )
;Монтируем образ Lingvo на первый виртуальный CD/DVD-привод
Run ( $alcoholdir & '\AxCmd.exe 1: /M:' & @ScriptDir & '\LV10ML.iso' )
Else
BlockInput ( 0 )
MsgBox ( 0, '', 'Для установки Lingvo требуется DaemonTools или Alcohol 120%.' & @LF & 'Сейчас установка Lingvo будет прекращена.' )
Exit
EndIf
;Ждем процесс "autorun.exe" не более 10 сек., если появится - закрываем
;(даже если диск без авторана, все равно нужна пауза на монтирование iso-файла)
If ProcessWait ( "autorun.exe", 10 )=1 Then
ProcessClose ( "autorun.exe" )
ProcessWaitClose ( "autorun.exe" )
EndIf
Sleep ( 100 )
;Определение буквы виртуального CDROM-а (67 - ASCII-код символа "C", 90 - "Z")
;(в качестве маркерного файла используем "ABBYY Lingvo 10 Multilingual Dictionary.msi")
$i = 67
While FileExists( Chr($i) & ':\ABBYY Lingvo 10 Multilingual Dictionary.msi' )=0 AND $i<=90
$i = $i + 1
WEnd
Sleep ( 50 )
;Запускаем установку Lingvo
;(/L1049 - русский язык диалоговых окон, SERIALNUMBER=сюда введите свой серийный номер)
Run ( Chr($i) & ':\setup.exe /L1049 /v"SERIALNUMBER=XXXX-XXXX-XXXX-XXXX-XXXX"' )
WinWaitActive ( 'ABBYY Lingvo 10 Multilingual Dictionary', 'Лицензионный договор' )
;Я принимаю условия лицензионного договора
ControlClick ( 'ABBYY Lingvo 10 Multilingual Dictionary', 'Лицензионный договор', 'Button3' )
Send ( '{ENTER}' )
WinWaitActive ( 'ABBYY Lingvo 10 Multilingual Dictionary', 'Укажите сведения о себе' )
Send ( '{ENTER}' )
WinWaitActive ( 'ABBYY Lingvo 10 Multilingual Dictionary', 'При установке вы можете использовать установочную дискету' )
;Копируем с CD/DVD образ установочной дискеты Lingvo во временный каталог
;(установщик Lingvo будет производить запись на эту "дискету" в процессе
;инсталляции, следовательно, он должен быть доступен для записи)
FileCopy( @ScriptDir & '\ling10me_flp.ima', @TempDir & '\ling10me_flp.ima', 1 )
Sleep ( 500 )
;Снимаем с образа установочной дискеты Lingvo атрибут Read-Only
;(файл копировался с CD, и явно не Far-ом :), а значит недоступен для записи)
FileSetAttrib( @TempDir & '\ling10me_flp.ima', "-R" )
Sleep ( 500 )
;Монтируем в виртуальном флопповоде (vfd - Virtual Floppy Driver) образ установочной дискеты Lingvo
RunWait ( @ScriptDir & '\vfd\vfd.exe MOUNT ' & @TempDir & '\ling10me_flp.ima /L:B', '', @SW_HIDE )
Sleep ( 500 )
;продолжаем установку
WinActivate ( 'ABBYY Lingvo 10 Multilingual Dictionary', 'При установке вы можете использовать установочную дискету' )
Send ( '{ENTER}' )
WinWaitActive ( 'ABBYY Lingvo 10 Multilingual Dictionary', 'Выберите режим установки и укажите папку' )
;Выборочная установка
;(для Стандартной сразу жать ENTER (удалив ControlClick) и перейти к STD)
ControlClick ( 'ABBYY Lingvo 10 Multilingual Dictionary', 'Выберите режим установки и укажите папку', 'Button3' )
Send ( '{ENTER}' )
WinWaitActive ( 'ABBYY Lingvo 10 Multilingual Dictionary', 'Выберите компоненты программы' )
;отключение ger-ru-ger словаря
Send ( '{DOWN}' )
Send ( '{RIGHT}' )
Send ( '{DOWN}' )
Send ( '{DOWN}' )
Send ( '!{DOWN}' )
Send ( '{UP}' )
Send ( '{ENTER}' )
;отключение fr-ru-fr словаря
Send ( '{DOWN}' )
Send ( '!{DOWN}' )
Send ( '{UP}' )
Send ( '{ENTER}' )
;отключение it-ru-it словаря
Send ( '{DOWN}' )
Send ( '!{DOWN}' )
Send ( '{UP}' )
Send ( '{ENTER}' )
;отключение esp-ru-esp словаря
Send ( '{DOWN}' )
Send ( '!{DOWN}' )
Send ( '{UP}' )
Send ( '{ENTER}' )
;отключить "озвученные немецкие слова"
Send ( '{DOWN}' )
Send ( '{DOWN}' )
Send ( '{DOWN}' )
Send ( '{RIGHT}' )
Send ( '{DOWN}' )
Send ( '{DOWN}' )
Send ( '!{DOWN}' )
Send ( '{UP}' )
Send ( '{ENTER}' )
Sleep ( 50 )
;продолжить установку
Send ( '{ENTER}' )
;STD
WinWaitActive ( 'ABBYY Lingvo 10 Multilingual Dictionary', 'Хранение настроек словарей' )
Send ( '{ENTER}' )
WinWaitActive ( 'ABBYY Lingvo 10 Multilingual Dictionary', 'Начало установки' )
Send ( '{ENTER}' )
WinWaitActive ( 'ABBYY Lingvo 10 Multilingual Dictionary', 'Установка ABBYY Lingvo 10 Multilingual Dictionary успешно завершена' )
Send ( '{ENTER}' )
Sleep ( 70 )
;Демонтируем образ уст. дискеты Lingvo и отрубаем вирт. дисковод
RunWait ( @ScriptDir & '\vfd\vfd.exe UMOUNT', '', @SW_HIDE )
Sleep ( 30 )
RunWait ( @ScriptDir & '\vfd\vfd.exe STOP', '', @SW_HIDE )
Sleep ( 30 )
RunWait ( @ScriptDir & '\vfd\vfd.exe REMOVE', '', @SW_HIDE )
Sleep ( 30 )
;Переносим ярлыки Lingvo в более удобное (мне) место
;(я не люблю беспорядка в меню "Программы" и делаю это для всех устанавливаемых прог)
DirCopy ( @ProgramsCommonDir & '\ABBYY Lingvo 10', @ProgramsCommonDir & '\Переводчики\ABBYY Lingvo 10', 1 )
DirRemove ( @ProgramsCommonDir & '\ABBYY Lingvo 10', 1 )
;Удаляем образ уст. дискеты Lingvo (он больше не понадобится)
FileDelete ( @TempDir & '\ling10me_flp.ima' )
Sleep ( 50 )
;Убиваем процесс Lvagent
ProcessClose ( "Lvagent.exe" )
ProcessWaitClose ( "Lvagent.exe" )
Sleep ( 50 )
;Демонтируем образ CD-диска Lingvo из вирт. привода
If $virtdrv=0 Then
RunWait ( $daemondir & '\daemon.exe -noicon -unmount 0' )
Else
RunWait ( $alcoholdir & '\AxCmd.exe 1: /U' )
EndIf
Sleep ( 50 )
;Удаляем Lingvo из автозапуска (кому хочется, чтобы Lingvo висело в трее - удалите следующие 2 строки)
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "Lingvo Launcher")
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "LingvoTraining")
;Может выскочить эта ошибка
;(окно "setup.exe - Диск отсутствует", сообщение "В устройстве нет диска. Вставьте диск в устройство X:")
;Если да - закрываем процесс setup.exe
If ProcessWait ( "setup.exe", 7 )=1 Then
ProcessClose ( "setup.exe" )
ProcessWaitClose ( "setup.exe" )
EndIf
Sleep ( 50 )
;снимаем блокировку мыши и клавы
BlockInput ( 0 )Пользуйтесь, кому нужно.

P.S. Устанавливается Lingvo долго (до 10 мин.), самый тормозной этап - "установка индекса" на образ дискеты. А когда индикатор "установки индекса" доходит почти до конца, может показаться, что комп (или мой скрипт) завис. Так и должно быть.
Эх, где-то я такое уже видел... :)

Solitude
29-06-2005, 01:51
Возникла такая проблема:
при установке программы необходмо импортировать данные из reg файла
делаю так

Run("regedit.exe /s Fail.reg", "")

Установка производится до первой загрузки Windows(RunOnceEx.cmd), но почему то запись в реестр не происходит ?
Самое интересное то, что если уже когда Windows загрузилась запусить этот же файл установки то данные в реестр экспортируются. Может кто подскажет решение этой проблемы ?

Sanja Alone
29-06-2005, 02:54
Solitude
Попробуй так:
RunWait ( "regedit /S Fail.reg", "", @SW_HIDE )И правильно будет и незаметно благодаря @SW_HIDE.

Solitude
29-06-2005, 22:10
Sanja Alone
Не работает... :-((

Sanja Alone
30-06-2005, 02:16
Solitude
Ну можешь еще так попробовать:
RunWait ( 'regedit /S ' & @ScriptDir & '\Fail.reg', '', @SW_HIDE )
;или так:
RunWait ( @Comspec & ' /C regedit /S ' & @ScriptDir & '\Fail.reg', '', @SW_HIDE )Если не катит, значит ты пытаешься писать в изменяемые при загрузке ветки/ключи реестра.

Чуть не забыл - все эти варианты работают только если reg-файл и скрипт находятся в одном каталоге. В противном случае, нужно писать полный путь. И еще одно - пробелы внутри кавычек (' ') стоят все по делу, а не для красоты - не удали случайно.

P.S. С моего автоустановочного диска все ставящиеся проги (с пом. WPI, к-рый действует также через RunOnceEx) вносят изменения в реестр именно первым способом (см. предыдущий пост) - все данные импортируются.

Solitude
30-06-2005, 20:54
Sanja Alone
Вот этот спопсоб

RunWait ( 'regedit /S ' & @ScriptDir & '\Fail.reg', '', @SW_HIDE )

сработал
Спасибо!!

Madcap
04-07-2005, 15:40
2 all

Возникла проблемка с Некоторыми комбинациями клавиш:


...
WinWait ("CDCheck - 3.0.1.43 [Personal non profit use]","", 0)
Sleep (300)
;Послать в активное окно комбинацию нажатий клавиш
Send ("!a") ; alt+a
...


Эта комбинация (Впрочем ALT+[любая другая буква]) отлично выполняется в 2000 и ХР. А в 98, такое впечатление, игнорируется.
Кто нибудь с таким сталкивался? С чем это связано? Какие еще команды глючат? И как с этим бороться
Прога качана по ссылке piterpen

godoo
05-07-2005, 10:53
2 all

Здравствуйте, всем!
Помогите решить такую проблему: при установке приложения нужно изменить путь установки, так, чтобы не прописывать точный путь, а указать текущую системную папку Program Files (т.е. как-то указать не C:\Program Files\... , а %systemdrive% или %programs%). Ну никак не хочет :(

Madcap
05-07-2005, 13:57
godoo

так
@ProgramFilesDir
пробовал?

Madcap
06-07-2005, 08:38
2 all
Вопрос про комбинации клавиш снимается.
Как оказалось в Win98 команда Send некоректно отрабатывает при заблокированной клавиатуре и мышке (BlockInput(1))
Если клавиатуру не блокировать - все комбинации клавиш работают нормально

2 godoo

Скачай хелп - там описаны все переменные понимаемые AutoIT.
Раздел Указатель Макро




© OSzone.net 2001-2012