|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Генератор Autoit script |
|
|
Генератор Autoit script
|
Новый участник Сообщения: 13 |
Профиль | Отправить PM | Цитировать Использую autoit для создания тихой установки приложений, Люди, подскажите, есть ли какая-либо программа, для генерации скриптов
К примеру запускаю инсталлятор, отвечаю на вопросы, это всё записывается и генерируется скрипт? Заранее спасибо... |
|
Отправлено: 05:59, 07-07-2009 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать 1 AutoItMacroGenerator
2 ScriptWriter по ходу, они в комплекте идут с этим SciTe .... да и выложить можно ...если надо |
------- Отправлено: 09:19, 07-07-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 374
|
Профиль | Отправить PM | Цитировать Цитата proxy:
нет ничего лучше скрипта,который сам написал.... |
|
------- Отправлено: 11:11, 07-07-2009 | #3 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать Цитата tweakos:
Цитата zmeeust:
|
||
------- Отправлено: 16:06, 07-07-2009 | #4 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать tweakos, Я с тобой согласен
Вчера попробовал, лажа полная самому лучше писать |
|
Отправлено: 04:33, 08-07-2009 | #5 |
Ветеран Сообщения: 816
|
Профиль | Отправить PM | Цитировать Цитата zmeeust:
|
|
------- Отправлено: 17:15, 08-07-2009 | #6 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать Цитата jentoso:
|
|
------- Отправлено: 17:55, 08-07-2009 | #7 |
Пользователь Сообщения: 67
|
Профиль | Отправить PM | Цитировать Может кому понадобится... Для собственных нужд писал, так что придирки к "культурности кода" не принимаются. Ничего сложного, прога собирает заголовки и (выбираемый пользователем из выводимого в листбоксе набора строк) уникальный текст окна для идентификации, а также идентификаторы контролов, может брать текст из edit боксов, вставлять его (для работы с кейгенами), распознает текст и переменные (если перед словом поставить $), закрывать окна, запускать файлы, кликать по координатам (не дорабатывал эту фичу за ненадобностью). После окончания работы установщика жмем Esc, получаем готовый скрипт автоустановщика, в редких случаях его приходится дорабатывать ручками. Нужного окна дождется автоматом, нажмет где надо... мне такого функционала хватает, а там смотрите сами.
#include <Misc.au3> #include <GUIConstants.au3> Opt("TrayIconDebug",1) ;Opt("MouseCoordMode",0) HotKeySet("{ESC}","texit") $dll = DllOpen("user32.dll") $file = FileOpen("file.au3", 2) $written_to_file_text="" $progstatus=0 $filepath="" $write_on_exit_text="" $_texttopaste="" $haos=0 $FilenameOnExitChange="" $input_variable_got="" $current_mpos=0 $as_is=0 ;fop() ;wr(";run('')") TrayTip("","ctrl - начало записи"&@lf&"pause - пауза/возобновление записи"&@lf&"shift - диалог открытия файла"&@lf&"esc - завершение записи",1) while not _IsPressed("11", $dll) sleep(10) WEnd TrayTip("","ЗАПИСЫВАЕМ",1) ;--------------------------------------------------------------------------------------------------------------------- While 1 if _IsPressed("01", $dll) Then ;01-lmb 02-rmb ctrltext & classn 11-ctrl 10-shift $current_mpos=MouseGetPos() $wtt=WinGetTitle("") $wgt=WinGetText("") $cgf=ControlGetFocus("") sleep(200) $wgt=repl($wgt) ;выбор уникального текста с параметрами пользователем Select case $progstatus=0 ;кликнуть if $cgf<>"" then wr("cl('"&$wtt&"','"&$wgt&"','"&$cgf&"')") case $progstatus=2 ;ждать wr("wa('"&$wtt&"','"&$wgt&"')") case $progstatus=3 ;взять if $cgf<>"" then wr("wa('"&$wtt&"','"&$wgt&"')"&@lf&$input_variable_got&"=ControlGetText('"&$wtt&"','"&$wgt&"','"&$cgf&"')") case $progstatus=4 ;вставить if $cgf<>"" And StringLeft($_texttopaste,1)= "$" then wr("wa('"&$wtt&"','"&$wgt&"')"&@lf&"ControlSetText('"&$wtt&"','"&$wgt&"','"&$cgf&"',"&$_texttopaste&")"&";ВСТАВИТЬ ТЕКСТ СЮДА") if $cgf<>"" And StringLeft($_texttopaste,1)<>"$" then wr("wa('"&$wtt&"','"&$wgt&"')"&@lf&"ControlSetText('"&$wtt&"','"&$wgt&"','"&$cgf&"','"&$_texttopaste&"')"&";ВСТАВИТЬ ТЕКСТ СЮДА") case $progstatus=10 ;окно возможно if $cgf<>"" then $write_on_exit_text&=@tab&@tab&"if WinExists('"&$wtt&"','"&$wgt&"') then ControlClick('"&$wtt&"','"&$wgt&"','"&$cgf&"')"&@lf case $progstatus=12 ;закрыть окно wr("wa('"&$wtt&"','"&$wgt&"')"&@lf&"WinClose('"&$wtt&"','"&$wgt&"')") WinClose($wtt,$wgt) case $progstatus=15;Отмена блока Sleep(1);ExitLoop case $progstatus=20;Кликаем по координатам мыши (при возможном появлении окна не сработает. отладить в будущем совместную работу опций) wr("wa('"&$wtt&"','"&$wgt&"')"&@lf&"MouseClick('left',"&$current_mpos[0]&","&$current_mpos[1]&",1,0)") EndSelect ;TrayTip($wtt,$cgf,1) $progstatus=0 $as_is=0 EndIf if _IsPressed("10",$dll) Then fop() if _IsPressed("13",$dll) Then pause() if _IsPressed("1b", $dll) Then texit();ExitLoop ;esc sleep(10) WEnd ;--------------------------------------------------------------------------------------------------------------------- func texit() ;завершение wr("Func wa($tx1, $tx2)") wr(" While Not WinExists($tx1, $tx2)") wr($write_on_exit_text&" ;if WinExists("","") then WinClose("","")") wr(" Sleep(1) ") wr(" WEnd ") wr(" ;WinActivate($tx1, $tx2)") wr("EndFunc") wr("Func cl($tx1, $tx2,$classn)") wr(" wa($tx1, $tx2)") wr(" ControlClick($tx1, $tx2,$classn)") wr("EndFunc") DllClose($dll) FileClose($file) if $FilenameOnExitChange<>"" Then if MsgBox(4,"","Переименовать файл скрипта?")=6 Then $FilenameOnExitChange=StringTrimRight($FilenameOnExitChange,4) FileMove("file.au3",$FilenameOnExitChange&"_au3.au3",1) EndIf if MsgBox(4,"","Компилировать скрипт?")=6 Then TrayTip("","Compiling in process",1) RunWait(@ProgramFilesDir&'\AutoIt3\Aut2Exe\Aut2exe.exe /in '&@ScriptDir&'\'&$FilenameOnExitChange&'_au3.au3') EndIf EndIf exit EndFunc Func fop() $filepath=FileOpenDialog("",@WorkingDir,"Программы (*.exe)") if Not @error And StringLeft($filepath,9)<>"c:\Progra" then $filepath=fred($filepath) wr("run('"&$filepath&"')") run($filepath) Else wr("run('"&$filepath&"')") run($filepath) EndIf if $FilenameOnExitChange="" Then $FilenameOnExitChange=$filepath $filepath="" EndFunc Func fred($ppp) $ppp_="" while StringRight($ppp,1)<>"\" $ppp_=StringRight($ppp,1)&$ppp_ $ppp=StringTrimRight($ppp,1) WEnd Return $ppp_ EndFunc Func pause() TrayTip("","ПАУЗА",1) sleep(300) while 1 if _IsPressed("13",$dll) OR $filepath<>"" Then ExitLoop sleep(10) WEnd TrayTip("","ЗАПИСЫВАЕМ",1) sleep(300) EndFunc Func wr($text_to_write) if $written_to_file_text<>$text_to_write then FileWrite($file,$text_to_write&@LF) $written_to_file_text=$text_to_write EndIf EndFunc Func wa($tx1, $tx2) While Not WinExists($tx1, $tx2) Sleep(1) WEnd EndFunc Func cl($tx1, $tx2,$classn) wa($tx1, $tx2) ControlClick($tx1, $tx2,$classn) EndFunc ;------------------------------------------------------------------------------------------------------GUI start func repl($whole_window_text) $tempstr=$whole_window_text $tempstr=StringReplace($tempstr,@crlf,"|") $tempstr=StringReplace($tempstr,@cr,"|") $tempstr=StringReplace($tempstr,@lf,"|") GUICreate("Выбери параметры и уникальный текст окна",310,350,-1,-1,-1,$WS_EX_TOPMOST) $ctrl=GUICtrlCreateLabel($cgf,0,5) $butt_cancel_block=GUICtrlCreateButton("Отмена блока",220,0,90) $butt_cancel_radio=GUICtrlCreateButton("Очистка опций",220,25,90) $radio_wa=GUICtrlCreateRadio("Просто ждать появления этого окна",0,25) $radio_get=GUICtrlCreateRadio("Читать отсюда текст",0,50) $input_variable_gui_get=GUICtrlCreateInput("",150,50) $radio_set=GUICtrlCreateRadio("Вставить сюда текст",0,75) $texttopaste=GUICtrlCreateInput("",150,75) $radio_possible=GUICtrlCreateRadio("Появление окна возможно, но необязательно",0,100) $radio_close=GUICtrlCreateRadio("Закрыть окно",0,125) $checkb_haos=GUICtrlCreateCheckbox("Произвольный порядок",120,125) $checkb_mpos=GUICtrlCreateCheckbox("Mpos",263,125) $butt_ok=GUICtrlCreateButton("Как есть",165,0) $listb=GUICtrlCreateList("",0,150,300,300,$LBS_USETABSTOPS) GUICtrlSetState($texttopaste,$GUI_HIDE) GUICtrlSetState($input_variable_gui_get,$GUI_HIDE) GUISetState(@SW_SHOW) GUICtrlSetData($listb,$tempstr) if $haos=1 then GUICtrlSetState ($checkb_haos,$GUI_CHECKED) if $haos<>1 then GUICtrlSetState ($checkb_haos,$GUI_UNCHECKED) $msg=0 While $msg <> $GUI_EVENT_CLOSE $msg = GUIGetMsg() Select case $msg=$listb ;MsgBox(0,"",GUICtrlRead($listb)) $whole_window_text=GUICtrlRead($listb) ExitLoop case $msg=$butt_cancel_block $progstatus=15 ExitLoop case $msg=$butt_cancel_radio GUICtrlSetState ($radio_wa,$GUI_UNCHECKED) GUICtrlSetState ($radio_get,$GUI_UNCHECKED) GUICtrlSetState ($radio_set,$GUI_UNCHECKED) GUICtrlSetState ($radio_possible,$GUI_UNCHECKED) GUICtrlSetState ($radio_close,$GUI_UNCHECKED) GUICtrlSetState ($checkb_haos,$GUI_UNCHECKED) GUICtrlSetState ($checkb_mpos,$GUI_UNCHECKED) case $msg=$radio_set GUICtrlSetState($texttopaste,$GUI_SHOW) case $msg=$radio_get GUICtrlSetState($input_variable_gui_get,$GUI_SHOW) case $msg=$butt_ok $as_is=1 ExitLoop EndSelect WEnd if $progstatus<>15 Then if GUICtrlRead($radio_wa)=1 then $progstatus=2 if GUICtrlRead($radio_get)=1 then $progstatus=3 if GUICtrlRead($radio_get)=1 then $input_variable_got=GUICtrlRead($input_variable_gui_get) if GUICtrlRead($radio_set)=1 then $progstatus=4 if GUICtrlRead($radio_set)=1 then $_texttopaste=GUICtrlRead($texttopaste) if GUICtrlRead($radio_possible)=1 then $progstatus=10 if GUICtrlRead($radio_close)=1 then $progstatus=12 if GUICtrlRead($checkb_haos)=1 then $haos=1 if GUICtrlRead($checkb_haos)<>1 then $haos=0 if GUICtrlRead($checkb_mpos)=1 then $progstatus=20 if $haos=1 Then $progstatus=10 EndIf GUIDelete() $tempstr="" While StringLeft($whole_window_text,1)<>"" And StringLeft($whole_window_text,1)<>"'" And StringLeft($whole_window_text,1)<>'"' ;чистим уникальный текст от недопустимых символов $tempstr&=StringLeft($whole_window_text,1) $whole_window_text=StringTrimLeft($whole_window_text,1) WEnd $whole_window_text=$tempstr if $as_is=1 Then $whole_window_text="" return $whole_window_text EndFunc ;----------------------------------------------------------------------------------------------------------------------GUI end Shift - открытие файла инстальника, кейгена и т.п. необходимого в процессе установки. Для создания автоустанавливающихся комплектов я использую отдельную виртуальную машину, чтобы не отвлекаться в процессе создания автоустановщика, чего и вам советую... |
------- Отправлено: 00:06, 09-07-2009 | #8 |
Новый участник Сообщения: 13
|
Профиль | Отправить PM | Цитировать jentoso, После генерации кода будет больше возни, лучше самому писать код,
чё непонятно смотреть в справке или спросить на форуме |
Отправлено: 04:52, 09-07-2009 | #9 |
Пользователь Сообщения: 67
|
Профиль | Отправить PM | Цитировать zmeeust, чтобы следовать твоему совету нужно быть фанатичным трудоголиком. Я, например, слишком ленивый человек, чтобы каждый раз делать все "ручками", проще написать программу, которая сделает всю нудятину за меня...
|
------- Отправлено: 18:35, 09-07-2009 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интернет - Генератор кодов ссылок? | Yez | Программное обеспечение Windows | 0 | 26-05-2009 18:12 | |
Log/Monitoring - генератор пакетов | Busla | Сетевые технологии | 2 | 25-04-2009 10:58 | |
какой нибудь генератор файлов *.theme | yurfed | Хочу все знать | 2 | 22-03-2007 21:53 | |
Генератор случайных чисел | Murrey | Хочу все знать | 3 | 22-08-2006 13:00 | |
генератор кода | Trojn | Мобильные ОС, смартфоны и планшеты | 5 | 04-04-2004 04:06 |
|