PDA

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


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

Sanja Alone
26-10-2005, 03:35
Меня по мылу уже неоднократно спаршивали как предотвратить множественный запуск одного и того же скрипта. Ответ вроде бы где-то на форуме встречался, но приведу его здесь еще раз. Все очень просто - в начало скрипта нужно добавить такую конструкцию:
If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)

EgOrus
26-10-2005, 08:39
Sanja Alone
да, ты прав WinWaitActive("Окно","Текст" там абсолютно не нужен, видимо сказалось позднее время и нежелание писать что-то свое, когда есть готовое, отсюда и невнимательность, конечно же везде должно быть просто WinActivate.

По поводу скрипта для Sateira CDDVD Burner, можно нескромный вопрос? :) а почему скрипт сделан через работу с окнами, а не ключами установки?
/SILENT
/DIR="path"
/GROUP="folder name"
/TASKS="desktop,quicklaunch" (или /NOICONS)

Sanja Alone
26-10-2005, 09:29
EgOrus
а почему скрипт сделан через работу с окнами, а не ключами установки?Я уже ранее писал о своем отношении к Inno Setup - он не всегда корректно отрабатывает эти самые ключи... А так все ОК.

EgOrus
26-10-2005, 10:32
Sanja Aloneон не всегда корректно отрабатывает эти самые ключи...
Это из личного опыта? в каких условиях не отрабатывает?
Странно, очень давно пользуюсь этой программой, сам постоянно делаю свои инстоляторы, ниразу не было чтобы что-то некоректно установилось. Единственный случай когда такое возможно, это если в скрипте жестко заданы пременные, и то отрабатывается все нормально просто поменять нельзя.
АвтоИт же наоборот только расширяет возможности InnoSetup, добавляя возможность использования переменных окружения при указании путей установки (при установке из комстроки требуется указание полновесных путей).

Спасибо за скрипт Gknot, я с тоской думал о том моменте когда придется его автоматизировать, жутко не люблю выписывать заголовки с окон, особенно когда их много

bogomolv
26-10-2005, 15:22
Sanja Alone

Как это блокирует? Вот у меня на автоустановочном диске лежит файлик drweb-432b-win-ru.exe. Ставится этим скриптом без всяких блокировок... Ес-но, для silent-установки нужно предварительно получить еще и файлик setup.iss (см. в том же архиве) установив один раз прогу командой drweb-432b-win-ru.exe -R.

Обнаружив, что DrWeb в 432 версии лишился старых ключей автоустановки (кажется, это делалось через ini-файл), в первую очередь опробовал именно комбинацию setup.exe -R + setup.exe -s -f1"путь\setup.iss". Файл setup.iss создавался нормально. Но обрабатываться он у меня никак не хотел (и не хочет!). В форуме на drweb.ru нашел подтверждение своим смутным подозрениям - кто-то из приближенных к разработчикам авторитетно утверждал, что такая возможность заблокирована, и автоматическая установка поддерживается только в Enterprise Suite.
Если это не так, то это здорово!
Но у меня установка не проходит ни с моими, ни с твоими файлами. Чтобы проверить твой скрипт, разыскал drweb-432b-win-ru.exe. Результат тот же. Только в моем случае в setup.log значится ResultCode=-3, в твоем - ResultCode=-5.
Кстати, а почему в твоем скрипте в строке запуска drweb-432b-win-ru.exe нет ключа -f1"путь\setup.iss"? Что, если не указывать на setup.iss явно, он должен "подхватится" автоматом?

Давай разбираться!

CTEPBA
26-10-2005, 21:46
Я сделал такой скрипт для Dr.Web 4,33 который работает по действиям, но у меня были проблемы с появление блокнота в конце, вроде я их решил, но еще проверял.
Run("setup.exe")
WinWaitActive("Dr.Web - InstallShield Wizard")
Send("{ENTER}")
WinWaitActive("Установка Dr.Web", "Программа InstallShield® Wizard установит Dr.Web (4.33.0.09290) на компьютер")
Send("{ENTER}")
WinWaitActive("Внимание!!!")
Send("{Space}")
Send("{ENTER}")
WinWaitActive("Установка Dr.Web", "ЛИЦЕНЗИОННЫЙ ДОГОВОР ОБ ИСПОЛЬЗОВАНИИ")
Send("{UP}")
Send("{ENTER}")
WinWaitActive("Установка Dr.Web", "Программа установки установит Dr.Web в следующую папку")
Send("{ENTER}")
WinWaitActive("Установка Dr.Web", "Выберите вид установки")
Send("{ENTER}")
WinWaitActive("Установка Dr.Web", "Программа установки добавит значки программ в папку, указанную ниже")
Send("{ENTER}")
WinWaitActive("Установка Dr.Web", "Программа установки располагает всеми данными для начала копирования программных файлов")
Send("{ENTER}")
WinWaitActive("Установка Dr.Web", "Если Вы не используете прокси сервер, нажмите")
Send("{Tab}")
Send("{Tab}")
Send("{Tab}")
Send("{ENTER}")
WinWaitActive("Вопрос")
Send("{Tab}")
Send("{ENTER}")
WinWaitActive("Установка Dr.Web", "Сейчас будет проведена экспресс-проверка Вашей системы")
Send("{ENTER}")
WinWaitActive("Вопрос")
Send("{Tab}")
Send("{ENTER}")
WinWaitActive("Установка Dr.Web", "Да, перезагрузить компьютер сейчас")
Send("{DOWN}")
Send("{ENTER}")
ProcessWait("notepad")
ProcessClose("notepad")

Sanja Alone
27-10-2005, 02:18
Я написал скрипт для Dr.Web 4.33 (http://sanjaalone.h15.ru/files/autoit-drweb.zip) через клацанье по окнам, добавил в zip-ку к скрипту для 4.32b. Пока можно юзать и такой вариант.


EgOrus
Это из личного опыта? в каких условиях не отрабатывает?Да, больше всего трабл вызывают /SAVEINF и /LOADINF - проще сразу написать скрипт, чем думать почему настройки не сохранились или не загрузились.

жутко не люблю выписывать заголовки с окон, особенно когда их многоА вот тут упомянутый мной выше ScriptWriter будет весьма кстати.


bogomolv
автоматическая установка поддерживается только в Enterprise SuiteВот Пик... пик... пик... редиски. И чего они хотят этим способом добиться? Бабок? - ничего не выйдет, народ у нас закаленный :)

разыскал drweb-432b-win-ru.exe. Результат тот же. Только в моем случае в setup.log значится ResultCode=-3, в твоем - ResultCode=-5А у меня как раз для версии 4.33 в логе значится ResultCode=-5, а 4.32b ставится как миленькая.

Что, если не указывать на setup.iss явно, он должен "подхватится" автоматом?Угу, конечно, если он будет лежать в том же каталоге, где и установщик.

Давай разбираться!Я обнаружил, что при запуске файла drweb-433-win-ru.exe в память загружается 2 процесса - один "правильный" (с указанными мной ключами -s -f2c:\drweb.log), а второй с теми же ключами, но перед ними стоит еще ключ -deleter. Вот если бы убить этот паразитный процесс не затронув полезного, то, возможно, проблема и решилась бы... Но вот как это сделать?

EgOrus
27-10-2005, 08:53
Sanja Alone
/SAVEINF и /LOADINF очень ограничены по использованию переменных окружения, все строчки из него дублируются обычными ключами.
Слегка видоизменил скрипт на Gknot, отменил установку AviSynth если есть более новый в этой же папке, добавил копирование плагинов к нему (к слову сказать - плаги ависинта работают на порядок быстрее VirtualDub'овских). В версии 2.56 появилась русская справка. Людям с толстыми каналами будет проще скачать новую версию GknotRipPack'a чем качать отдельно новый ависинт, тогда из скрипта нужно будет вырезать лишнее и переместить скрипт на установку ависинта.If WinExists(@ScriptName) Then
MsgBox(0, "Warning!", "Закрой предыдущую копию скрипта")
Exit
EndIf
AutoItWinSetTitle(@ScriptName)

Opt('TrayIconDebug',1)
Opt('SendKeyDownDelay', 50)

ToolTip("Installing in progress. Please wait.", 1, 1)

#cs
----------------------
объявление переменных
----------------------
$file - имя инсталляционного файла
$avsfile - новая версия AviSynth
$AviSynthFolder - в какой подкаталог GKnot-а установить AviSynth
$VobSubFolder - в какой подкаталог GKnot-а установить VobSub
$vdubmodplug - rarsfx-архив с плагинами к VirtualDubMod
команды SFX-сценария (положите каталог PLUGINS целиком внутрь архива, в противном сл. задайте Path=GordianKnot\VirtualDubMod\Plugins):
Path=GordianKnot\VirtualDubMod
SavePath
Silent=1
Overwrite=1
----------------------
#ce
Global $file='GordianKnot.RipPack.0.35.0.Setup.exe', $avsfile='AviSynth\AviSynth_256_040905.exe', $AviSynthFolder='\AviSynth', $VobSubFolder='\Vobsub', $vdubmodplug='vdubmod_plugins.exe'
Run ( $file )
WinWaitActive ( 'Gordian Knot', 'License Agreement' )
Send ( '{ENTER}' )
WinWaitActive ( 'Gordian Knot', 'Choose Components' )
Send ( '{ENTER}' )
WinWaitActive ( 'Gordian Knot', 'Choose Install Location' )
$InstPath = ControlGetText ( 'Gordian Knot', 'Choose Install Location', 'Edit1')
Send ( '{ENTER}' )
WinWaitActive ( 'Installer Language' )
Send ( '{ENTER}' )
AutoItSetOption("WinTitleMatchMode", 2)
WinWaitActive ( 'VobSub', 'Welcome to the VobSub Setup Wizard' )
Send ( '{ENTER}' )
WinWaitActive ( 'Installation Options' )
Send ( '{ENTER}' )
WinWaitActive ( 'Installation Folder' )
ControlSetText( 'Installation Folder', '', 'Edit1', $InstPath & $VobSubFolder )
Send ( '{ENTER}' )
WinWaitActive ( 'Completed' )
Send ( '{ENTER}' )

AutoItSetOption("WinTitleMatchMode", 1)
If FileExists ( @ScriptDir & '\' & $avsfile ) Then
; Отказ от установки AviSynth 2.5.5
WinWaitActive ( 'AviSynth', 'License Agreement' )
ControlClick( 'AviSynth', 'License Agreement', 'Button3')
Send ( '{ENTER}' )
Else
; Установка AviSynth из пакета Gknot
WinWaitActive ( 'AviSynth', 'License Agreement' )
Send ( '{ENTER}' )
WinWaitActive ( 'AviSynth', 'Choose Components' )
Send ( '{ENTER}' )
WinWaitActive ( 'AviSynth', 'Choose Install Location' )
ControlSetText( 'AviSynth', 'Choose Install Location', 'Edit1', $InstPath & $AviSynthFolder )
Send ( '{ENTER}' )
WinWaitActive ( 'AviSynth', 'Completing the AviSynth Setup Wizard' )
Send ( '{ENTER}' )
EndIf

WinWait ( 'Gordian Knot', 'Installation Complete' )
WinClose ( 'Gordian Knot', 'Installation Complete' )
WinWaitClose ( 'Gordian Knot', 'Installation Complete' )

If FileExists ( @ScriptDir & '\' & $avsfile ) Then
; Установка новой версии AviSynth
Run ( $avsfile )
WinWaitActive ( 'AviSynth', 'License Agreement' )
Send ( '{ENTER}' )
WinWaitActive ( 'AviSynth', 'Choose Components' )
; Отметка русской справки
Send ('{TAB}{DOWN}{RIGHT}r{SPACE}')
ControlClick( 'AviSynth', '', 'Button2')
WinWaitActive ( 'AviSynth', 'Choose Install Location' )
ControlSetText( 'AviSynth', 'Choose Install Location', 'Edit1', $InstPath & $AviSynthFolder )
Send ( '{ENTER}' )
WinWaitActive ( 'AviSynth', 'Completing the AviSynth Setup Wizard' )
Send ( '{ENTER}' )
EndIf

;запуск программы для внесения в реестр базовых настроек
Run ( $InstPath & '\GordianKnot.exe' )
WinWait ( 'Choose Language' )
WinActivate ( 'Choose Language' )
Send ( '{ENTER}' )
AutoItSetOption("WinTitleMatchMode", 2)
WinWait ( '(gordianknot.sourceforge.net)' )
WinClose ( '(gordianknot.sourceforge.net)' )
WinWaitClose ( '(gordianknot.sourceforge.net)' )
Sleep ( 50 )
;путь к DVDDecrypter почему-то не вносится в реестр в отличие от других (глюк наблюдается в версии GKnot 0.35.0)
RegWrite('HKEY_CURRENT_USER\Software\GordianKnot',"DvdDecrypterExe","REG_SZ",FileGetShortName($InstPath)&'\DVDDecrypter\dvddecrypter.exe')
;н-рые настройки
RegWrite('HKEY_CURRENT_USER\Software\GordianKnot',"DvdDecrypterNotUsed","REG_DWORD","00000000")
RegWrite('HKEY_CURRENT_USER\Software\GordianKnot',"ActivePage","REG_DWORD","00000000")
RegWrite('HKEY_CURRENT_USER\Software\GordianKnot',"Language","REG_SZ",'Russian')
RegWrite('HKEY_CURRENT_USER\Software\GordianKnot\Slot0',"Bitrate","REG_DWORD","00000421")
RegWrite('HKEY_CURRENT_USER\Software\GordianKnot\Slot0',"DivXMode","REG_DWORD","00000005")
RegWrite('HKEY_CURRENT_USER\Software\GordianKnot\Slot0',"CalculateAVIOverhead","REG_DWORD","00000001")
Sleep ( 50 )

;Распаковка дополнительных плагинов к VirtualDubMod
If FileExists ( @ScriptDir & '\' & $vdubmodplug ) Then RunWait ( @ScriptDir & '\' & $vdubmodplug )
;Копирование дополнительных плагинов AviSynth
DirCopy ( @ScriptDir & '\AviSynth\plugins', $InstPath & '\AviSynthPlugins', 1 )

;перенос ярлыков
;DirCopy ( @ProgramsCommonDir & '\Gordian Knot', @ProgramsCommonDir & '\CD и DVD утилиты\Gordian Knot', 1 )
DirCopy ( @ProgramsCommonDir & '\AviSynth 2.5', @ProgramsCommonDir & '\Gordian Knot\AviSynth', 1 )
DirCopy ( @ProgramsDir & '\AviSynth 2.5', @ProgramsCommonDir & '\Gordian Knot\AviSynth', 1 )
DirCopy ( @ProgramsDir & '\VobSub', @ProgramsCommonDir & '\Gordian Knot\VobSub', 1 )
;DirRemove ( @ProgramsCommonDir & '\Gordian Knot', 1 )
DirRemove ( @ProgramsCommonDir & '\AviSynth 2.5', 1 )
DirRemove ( @ProgramsDir & '\AviSynth 2.5', 1 )
DirRemove ( @ProgramsDir & '\VobSub', 1 )

bogomolv
27-10-2005, 20:21
Sanja Alone
Вот если бы убить этот паразитный процесс не затронув полезного, то, возможно, проблема и решилась бы... Но вот как это сделать?
С помощью ProcessWait(), ProcessList(), ProcessClose(). Но не помогает!

Sanja Alone
28-10-2005, 05:55
EgOrus
1. Ошибка
...
If FileExists ( @ScriptDir & '\' & $avsfile ) Then
; Отказ от установки AviSynth 2.5.5
WinWaitActive ( 'AviSynth', 'License Agreement' )
ControlClick( 'AviSynth', 'License Agreement', 'Button3')
Send ( '{ENTER}' )
ElseIf
...Здесь должно быть просто Else. Советую юзать редактор SciTe (http://www.autoitscript.com/autoit3/scite/downloads.php) ( Ctrl+F5 - проверка синтаксиса ) - помогает при отлове подобных опечаток.

2. А зачем Opt('SendKeyDownDelay', 50) если в моем скрипте и так все работало?


bogomolv
С помощью ProcessWait(), ProcessList(), ProcessClose(). Но не помогает!Я уже успел попробовать. Тестовый код:
Global $file='drweb-433-win-ru.exe'
Run ( $file & ' -s -f2' & EnvGet("SYSTEMDRIVE") & '\drweb.log' )
Sleep ( 200 )
$list = ProcessList($file)
If $list[1][1] > $list[2][1] Then
ProcessClose ( $list[1][1] )
msgbox(64, 'Процесс с PID = '&$list[1][1]&' был закрыт', 'Процессы drweb в памяти:'&@LF&@LF&$list[1][0] &' '& $list[1][1] &@LF& $list[2][0] &' '& $list[2][1],8)
Else
ProcessClose ( $list[2][1] )
msgbox(64, 'Процесс с PID = '&$list[2][1]&' был закрыт', 'Процессы drweb в памяти:'&@LF&@LF&$list[1][0] &' '& $list[1][1] &@LF& $list[2][0] &' '& $list[2][1],8)
EndIfПричем независимо от того, какой процесс убивается - с большим или меньшим PID (это определяется знаком "<" или ">" в If-е) в памяти все равно остается тот, у к-рого есть паскудный ключ -deleter. Вот такая кака :(

EgOrus
28-10-2005, 07:30
Sanja Alone
да, все правильно, благодарю, такие вот гадкие ошибки потом всплывают в самый неподходящий момент.
Opt('SendKeyDownDelay', 50) пришло в скрипт вместе с шапкой, это у меня в каждом скрипте, особой пользы не несет, также как и вреда.

Petya V4sechkin
28-10-2005, 10:18
Вчера почти весь день убил на активацию AutoCAD 2005. Пришлось извратиться пару раз :)
Никому не надо? Если надо, скажите.

skylego
28-10-2005, 11:17
Вчера почти весь день убил на активацию AutoCAD 2005. Пришлось извратиться пару раз :)
Никому не надо? Если надо, скажите.

Если можно, то надо.
Отправь мне на skylego@mail.ru

garbals
28-10-2005, 20:38
как написать скрипт для

включения гостя в XP
разрешить доступ к комьпьютеру из сети гостям
отклонить локальный вход гостю
авто логон имеющегося пользователя (не известно какого)

помогите с написанием скрипта :)

EgOrus
28-10-2005, 21:23
garbals
это все делается батником1.
net user Гость /active:yes
2 и 3
secedit /configure /cfg %SystemRoot%\Security\Templates\netaccess.inf /db %SystemRoot%\Security\Database\netaccess.db /overwrite /log %SystemRoot%\Security\logs\netaccess.log /quiet
4.
set UserN=%UserName%
set Password=
set regpath="HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"

:: Setting User %UserN% to Autologon.
REG ADD %regpath% /v DefaultUserName /t REG_SZ /d %UserN% /f
REG ADD %regpath% /v DefaultPassword /t REG_SZ /d %Password% /f
REG ADD %regpath% /v AutoAdminLogon /t REG_SZ /d 1 /f данный тэмплэйт политик безопасности netaccess.inf, можно подправить (напрмер если нужен пользователь не Гость а какой нибудь другой/ие)

garbals
29-10-2005, 02:20
запустил батник не работает всё в политике на своих местах

EgOrus
29-10-2005, 08:40
garbals
подробности отправил в ПМ, оффтоп получается

Sanja Alone
01-11-2005, 01:36
Я получил на мейл такой вопрос:
Возможно ли в AutoIt v3 сделать цикл, который бы проверял открыт или
закрыт CD-ROM - если открыт, то его закрыть и наоборот.
Тут есть одна загвоздка - функция DriveStatus("Z:\")="NOTREADY" в двух случаях:
1. лоток выдвинут
2. лоток задвинут, но без диска.

Я вижу преодоление данной неоднозначности только с пом. начальных условий и дополнительной переменной и предложил такой вариант:
;задаем букву диска при пом. переменной для удобства написания кода
Global $d="Z:"
;начальные условия:
;нужно предварительно закрыть лоток, чтобы убрать неопределенность
CDTray($d, "closed")
;переменная, определяющая положение лотка (1 - выдвинут, 0 - задвинут)
Global $t=0

;цикл для демонстрации работы (любой код)
For $i=1 To 4
;вызов функции открытия/закрытия лотка независимо от наличия/отсутствия
;в нем диска (если открыт - закроется, и наоборот)
mycd($t, $d)
Next

;определяем возможность модификации функцией переменной $t (с пом. ключевого
;слова ByRef), чтобы потом можно было многократно в нужные моменты вызывать
;функцию mycd() и ей передавалось правильное состояние лотка.
Func mycd(ByRef $tray, $drive)
Local $status = DriveStatus($drive&"\")
Select
Case $status = "READY"
CDTray($drive, "open")
msgbox (64,'case1','$status = '&$status& @LF &'$tray = '&$tray& @LF &'action = "open"',3)
$tray=1
Case $status = "NOTREADY" and $tray=1
CDTray($drive, "closed")
msgbox (64,'case2','$status = '&$status& @LF &'$tray = '&$tray& @LF &'action = "closed"',6)
$tray=0
Case $status = "NOTREADY" and $tray=0
CDTray($drive, "open")
msgbox (64,'case3','$status = '&$status& @LF &'$tray = '&$tray& @LF &'action = "open"',6)
$tray=1
EndSelect
EndFuncСкорее всего, это неоптимальный вариант решения поставленной задачи, но он работоспособен. MsgBox-ы я поставил для наглядности - в рабочем варианте здесь должны быть Sleep-ы, достаточные для распознавания диска в приводе (при задвигании лотка) и поменьше (при выдвигании).

В принципе, задача не мирового масштаба, но все же: как ее решить правильно, какие будут мысли?

fox_sly
01-11-2005, 11:24
Во первых строках огромный сенькс за труды Sanja Alone, bogomolv и другим участникам форума, за их подробные описания и толкования...
Изучив труды набросал для знакомого скриптик для установки Photoshop CS2, может кому пригодится?

Sanja Alone
- может подредактируешь и выложишь более оптимальный вариант у себя на сайте?

регистрациооные данные вбиты в файле Abcpy.ini

[OEM Install]
SERIALNUMBER=XXXX-XXXX-XXXX-XXXX-XXXX-XXXX
USERNAME=Fox Sly
COMPANYNAME=Fox Sly System


сам скрипт


;предотвращение возможности множественного запуска скрипта добавлено Sanja Alone
If WinExists(@ScriptName) Then Exit
AutoItWinSetTitle(@ScriptName)

;Отображать текущую строку сценария с помощью индикатора системной панели в режиме отладки.
AutoItSetOption("TrayIconDebug", 1)

; Установка переменных
Global $file='setup.exe', $key='keygen.exe', $rus='PhotoshopCS2RU.exe', $AvtCode, $ACStr

Run ( $file )

WinWaitActive ( 'Adobe Photoshop CS2 - Setup' )
ControlClick ( 'Adobe Photoshop CS2 - Setup', '', 'Button1' )

; окно лицензионного соглашения, я думаю Не согласных нет? -)
WinWaitActive ( 'Adobe Photoshop CS2 - License Agreement' )
ControlClick ( 'Adobe Photoshop CS2 - License Agreement', '', 'Button5' )

; ввод информации о пользователе, в моем примере данные прописаны в файле Abcpy.ini
WinWaitActive ( 'Adobe Photoshop CS2 - Setup','Customer Information' )
ControlClick ( 'Adobe Photoshop CS2 - Setup', 'Customer Information', 'Button1' )

; выбор пути установки - по умолчанию
WinWaitActive ( 'Adobe Photoshop CS2 - Setup','Destination Folder' )
ControlClick ( 'Adobe Photoshop CS2 - Setup', 'Destination Folder', 'Button1' )

; ассоциация файлов - по умолчанию
WinWaitActive ( 'Adobe Photoshop CS2 - Setup','File Association' )
ControlClick ( 'Adobe Photoshop CS2 - Setup', 'File Association', 'Button1' )

; рапорт инсталятора о готовности к установки
WinWait ( 'Adobe Photoshop CS2 - Setup','Ready to Install the Program' )
WinWaitActive ( 'Adobe Photoshop CS2 - Setup','Ready to Install the Program' )
ControlClick ( 'Adobe Photoshop CS2 - Setup', 'Ready to Install the Program', 'Button1' )

; активация - начало
WinWait ( 'Adobe Photoshop Installer','Activation Options' )

;это окно иногда появляется, а иногда нет. Закономерность появления не найдена.
If WinExists ( 'Adobe Photoshop Installer', 'Activate Using the Internet' ) Then
WinActivate ( 'Adobe Photoshop Installer', 'Activate Using the Internet' )
WinWaitActive ( 'Adobe Photoshop Installer', 'Activate Using the Internet' )
ControlClick ( 'Adobe Photoshop Installer', 'Activate Using the Internet', 'Button3' )
EndIf
; продолжение активации - выбираем активировать по телефону
WinWaitActive ( 'Adobe Photoshop Installer','Activation Options' )
Sleep ( 500 )
ControlClick ( 'Adobe Photoshop Installer','Activation Options', 'Button2' )
Sleep ( 500 )
ControlClick ( 'Adobe Photoshop Installer','Activation Options', 'Button7' )

; Запуск кейгена
Run ( $key )
WinWaitActive ( 'Keygen by PARADOX', 'Serial Number')

; Активация окна регистрации, получение серийника и вставка в кейген
WinActivate ( 'Adobe Photoshop Installer', 'Phone Activation' )
WinWaitActive ( 'Adobe Photoshop Installer', 'Phone Activation' )
$GetSN1=ControlGetText('Adobe Photoshop Installer', 'Phone Activation', 'Edit3')
ControlSetText('Keygen by PARADOX', 'Serial Number', 'Edit1', $GetSN1)

; Получение активационного номера и вставка в кейген
$GetSN2=ControlGetText('Adobe Photoshop Installer', 'Phone Activation', 'Edit4')
ControlSetText('Keygen by PARADOX', 'Serial Number', 'Edit2', $GetSN2)

; Активация кейгена и генерация кода авторизации
WinActivate ( 'Keygen by PARADOX', 'Serial Number' )
WinWaitActive ( 'Keygen by PARADOX', 'Serial Number')
ControlClick ( 'Keygen by PARADOX', 'Serial Number', 'Button2' )
Sleep ( 500 )

; Получение кода авторизации
$AvtCode = ControlGetText ( 'Keygen by PARADOX', 'Serial Number', 'Edit3' )

; Код авторизации получен в виде xxxx xxxx xxxx xxxx xxxx разбиваем его на блоки
$ACStr = StringSplit ( $AvtCode, ' ' )
Sleep ( 500 )

; вставка кода авторизации
WinActivate ( 'Adobe Photoshop Installer', 'Phone Activation' )
WinWaitActive ( 'Adobe Photoshop Installer', 'Phone Activation' )
ControlSetText ( 'Adobe Photoshop Installer', 'Phone Activation', 'Edit6', $ACStr[1] )
ControlSetText ( 'Adobe Photoshop Installer', 'Phone Activation', 'Edit7', $ACStr[2] )
ControlSetText ( 'Adobe Photoshop Installer', 'Phone Activation', 'Edit8', $ACStr[3] )
ControlSetText ( 'Adobe Photoshop Installer', 'Phone Activation', 'Edit9', $ACStr[4] )
ControlSetText ( 'Adobe Photoshop Installer', 'Phone Activation', 'Edit10', $ACStr[5] )

; закрываем кейген
WinActivate ( 'Keygen by PARADOX', 'Serial Number' )
WinWaitActive ( 'Keygen by PARADOX', 'Serial Number')
ControlClick ( 'Keygen by PARADOX', 'Serial Number', 'Button3' )

; продолжаем установку
WinActivate ( 'Adobe Photoshop Installer', 'Phone Activation' )
WinWaitActive ( 'Adobe Photoshop Installer', 'Phone Activation' )
ControlClick ( 'Adobe Photoshop Installer', 'Phone Activation', 'Button3' )

WinWait ( 'Adobe Photoshop Installer', 'Thank You!' )
WinWaitActive ( 'Adobe Photoshop Installer', 'Thank You!' )
ControlClick ( 'Adobe Photoshop Installer', 'Thank You!', 'Button2' )

; основная установка закончена, ждем установки Adobe Brige и прочей ерунды

WinWait ( 'Adobe Photoshop CS2 - Setup', 'InstallShield Wizard Completed' )
WinWaitActive ( 'Adobe Photoshop CS2 - Setup', 'InstallShield Wizard Completed' )
ControlClick ( 'Adobe Photoshop CS2 - Setup', 'InstallShield Wizard Completed', 'Button4' )
Sleep ( 50 )
ControlClick ( 'Adobe Photoshop CS2 - Setup', 'InstallShield Wizard Completed', 'Button3' )


; Запуск руссификатора, для тех кому он нужен
Run ( $rus )
WinWaitActive ( 'Adobe Photoshop CS2 Russian - InstallShield Wizard')
ControlClick ( 'Adobe Photoshop CS2 Russian - InstallShield Wizard', '', 'Button1' )
WinWaitActive ( 'Adobe Photoshop CS2 Russian - InstallShield Wizard', 'Select folder where setup will install files' )
ControlClick ( 'Adobe Photoshop CS2 Russian - InstallShield Wizard', 'Select folder where setup will install files' , 'Button6' )
WinWaitActive ( 'Adobe Photoshop CS2 Russian - InstallShield Wizard', 'The wizard is ready to begin installation.' )
ControlClick ( 'Adobe Photoshop CS2 Russian - InstallShield Wizard', 'The wizard is ready to begin installation.' , 'Button8' )
WinWaitActive ( 'Adobe Photoshop CS2 Russian - InstallShield Wizard', 'InstallShield Wizard Complete' )
ControlClick ( 'Adobe Photoshop CS2 Russian - InstallShield Wizard', 'InstallShield Wizard Complete' , 'Button15' )

exit





Проверил на паре машин - вроде работает

Sanja Alone
02-11-2005, 05:22
Petya V4sechkin
Вчера почти весь день убил на активацию AutoCAD 2005. Пришлось извратиться пару раз :)
Никому не надо? Если надо, скажите.Если не будешь возражать, то я размещу твой скрипт на соотв. странице (http://sanjaalone.h15.ru/au3.php) своего сайта (дав ссылку на тебя (http://forum.oszone.net/member.php?userid=27596) как автора). В сл. твоего согласия - кинь свой скрипт мне на мыло (sanjaalone@mail.ru).

fox_sly
может подредактируешь и выложишь более оптимальный вариант у себя на сайте?Спасибо, уже выложил (http://sanjaalone.h15.ru/files/autoit-pscs2.zip). А подредактировать я не смогу, т.к. Photoshop CS2 у меня нет - проверить будет не на чем :)




© OSzone.net 2001-2012