Показать полную графическую версию : [Архив - Часть 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-сидюка на реальной, а не вирт. машине...
Вопрос к специалистам по 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)
jurikorn
Спасибо! Видимо придется мне разбираться с AutoIt (а так лень было это делать ;-), если не найду другого решения своей задачи...
Вникнув в проблему детальнее я не вижу как мне определить ControlID в моем окне. Это Word 2002, окно Tools | Options. Похоже все эти чекбоксы не имеют индивидуальных ControlID.
Через реестр, похоже, тоже не вариант, т.к. regshot отслеживает такой ключ [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\9040210900063D11C8EF00054038389C\Usage] на разных машинах скорее всего набор цифр будет другим... Вообще, это не столько автоматическая установка, сколько автоматизация процесса настройки после установки, которую проводил не я.
Как определить Имя компьютера или его 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 )
сработал
Спасибо!!
2 all
Возникла проблемка с Некоторыми комбинациями клавиш:
...
WinWait ("CDCheck - 3.0.1.43 [Personal non profit use]","", 0)
Sleep (300)
;Послать в активное окно комбинацию нажатий клавиш
Send ("!a") ; alt+a
...
Эта комбинация (Впрочем ALT+[любая другая буква]) отлично выполняется в 2000 и ХР. А в 98, такое впечатление, игнорируется.
Кто нибудь с таким сталкивался? С чем это связано? Какие еще команды глючат? И как с этим бороться
Прога качана по ссылке piterpen
2 all
Здравствуйте, всем!
Помогите решить такую проблему: при установке приложения нужно изменить путь установки, так, чтобы не прописывать точный путь, а указать текущую системную папку Program Files (т.е. как-то указать не C:\Program Files\... , а %systemdrive% или %programs%). Ну никак не хочет :(
godoo
так
@ProgramFilesDir
пробовал?
2 all
Вопрос про комбинации клавиш снимается.
Как оказалось в Win98 команда Send некоректно отрабатывает при заблокированной клавиатуре и мышке (BlockInput(1))
Если клавиатуру не блокировать - все комбинации клавиш работают нормально
2 godoo
Скачай хелп - там описаны все переменные понимаемые AutoIT.
Раздел Указатель Макро
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.