Показать полную графическую версию : Генератор Autoit script
Использую autoit для создания тихой установки приложений, Люди, подскажите, есть ли какая-либо программа, для генерации скриптов
К примеру запускаю инсталлятор, отвечаю на вопросы, это всё записывается и генерируется скрипт?
Заранее спасибо...
1 AutoItMacroGenerator
2 ScriptWriter
по ходу, они в комплекте идут с этим SciTe (http://www.autoitscript.com/autoit3/scite/downloads.shtml) .... :sorry:
да и выложить можно ...если надо
1 AutoItMacroGenerator
2 ScriptWriter »
имхо.все эти генераторы ,я вам скажу,.....лучше да ну их нафиг.
нет ничего лучше скрипта,который сам написал....
имхо.все эти генераторы ,я вам скажу,.....лучше да ну их нафиг.
нет ничего лучше скрипта,который сам написал.... »
согласен!! ), но вопрос же - в обратном:
Люди, подскажите, есть ли какая-либо программа, для генерации скриптов
К примеру запускаю инсталлятор, отвечаю на вопросы, это всё записывается и генерируется скрипт? »
как спросил - так и ответил :)
tweakos, Я с тобой согласен
Вчера попробовал, лажа полная самому лучше писать
Вчера попробовал, лажа полная самому лучше писать »
А что, если вручную потом испраить то что сгенерировалось? Или там полная неразберихи. Просто сам еще этот метод не использовал. В основном так же делаю вручную.
А что, если вручную потом испраить то что сгенерировалось? Или там полная неразберихи. Просто сам еще этот метод не использовал. В основном так же делаю вручную. »
Можно и так - тут главное что бы удоно было.
266903582
09-07-2009, 00:06
Может кому понадобится... Для собственных нужд писал, так что придирки к "культурности кода" не принимаются. Ничего сложного, прога собирает заголовки и (выбираемый пользователем из выводимого в листбоксе набора строк) уникальный текст окна для идентификации, а также идентификаторы контролов, может брать текст из 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
Ctrl - начало слежения за установкой (если нажатие не нужно записывать - жми кнопку "отмена блока")
Shift - открытие файла инстальника, кейгена и т.п. необходимого в процессе установки.
Для создания автоустанавливающихся комплектов я использую отдельную виртуальную машину, чтобы не отвлекаться в процессе создания автоустановщика, чего и вам советую...
jentoso, После генерации кода будет больше возни, лучше самому писать код,
чё непонятно смотреть в справке или спросить на форуме
266903582
09-07-2009, 18:35
zmeeust, чтобы следовать твоему совету нужно быть фанатичным трудоголиком. Я, например, слишком ленивый человек, чтобы каждый раз делать все "ручками", проще написать программу, которая сделает всю нудятину за меня...
266903582, Дерзай, буду рад посмотреть на результат
Я, например, слишком ленивый человек, чтобы каждый раз делать все "ручками", проще написать программу, которая сделает всю нудятину за меня... »
Умнее ты от этого не станешь.....ведь пока пишешь скрипт руками,расширяется и база знаний ,а следовательно можно ставить перед собой новые более сложные задачи......
tweakos,
Полностью с тобой согласен
266903582
16-07-2009, 19:08
zmeeust, http://forum.oszone.net/post-1162531-8.html
Дерзанул, давно пользуюсь, меня полностью устраивает...
tweakos, от рутинных телодвижений нового не познать, а если задача не решается автоматизатором (а я не мало условий предусмотрел), тогда уж ручками работаем и "базу знаний" расширяем.
tweakos,
Полностью с тобой согласен »
Странно слышать такое от автора темы " Генератор Autoit script ", но это уж дело автора, я свое конструктивное решение предложил, использовать его не заставляю...
266903582, от рутинных телодвижений нового не познать, а если задача не решается автоматизатором (а я не мало условий предусмотрел), тогда уж ручками работаем и "базу знаний" расширяем. »
Если человеку нужен генератор,это наталкивает на мысль что он вообще не знает автоита,так как не может выполнить задачу без генератора.Зачем тогда ему вообще автоит нужен?
ИМХО Не надо делать из автоита "тупую кликалку",он может решать задачи гораздо сложнее,чем просто нажатие кнопки..
ИМХО Не надо делать из автоита "тупую кликалку",он может решать задачи гораздо сложнее,чем просто нажатие кнопки.. »
имхо, перебор. Если "тупая кликалка" выполняет правильно необходимые задачи - это хорошо.
AutoIt это уже вполне мноооооого умеющий язык, "тупой кликалки" уже не получится )
AutoIt это уже вполне мноооооого умеющий язык, "тупой кликалки" уже не получится »
Именно это я и имел в виду.ИМХО генераторы скриптов как раз таки превращают автоит в "тупую кликалку"...
Именно это я и имел в виду.ИМХО генераторы скриптов как раз таки превращают автоит в "тупую кликалку"... »
по мойму, это утверждение, как и беседы на эту тему - абсолютно пусты. можно взглянуть на заааааааафигенное колличество разрабатываемых утилиток и UDF-ок на офф форуме - думаю, это показывает, что уровень языка высокий и позволяет реализовать как и кликалки, так и более.
имхо, кликакли - очень ползные. пример, работа в офисе - поступило задание "недельную работу выполнить за два часа" - вот тут как раз кликолки и спасают мир ;) имхо, нужно все! и мега навороченные варианты и "тупые жмаколки", "безмозговые тыкалки" и "бездумные нажималки"!
266903582
17-07-2009, 21:27
ИМХО генераторы скриптов как раз таки превращают автоит в "тупую кликалку"... »
... а калькуляторы (написанные на автоите) превращают автоит в тупую "считалку"?
Бред вы несете, товарисЧ. Язык программирования - средство решения задач, поставленных перед программистом. Если на автоите вирус написали, значит его превратили в "тупую вирусописалку"?
Боюсь вас напугать, но автоит - тоже "тупой" (т.к. ничего больше делать не умеет) генератор "понятного" для винды кода. А написали его люди, стремящиеся программировать более эффективно, т.е. решать задачи, производя меньшее кол-во телодвижений. Именно это и делают "тупые кликалки", разгружают пользователя от лишней работы, а процесс внедрения "тупых кликалок" называют еще "автоматизацией трудового процесса".
А на закуску приведу вам цитату из справочника:
"AutoIt v3 - это язык для написания сценариев, напоминающий BASIC и предназначенный для автоматизации Windows GUI (графического интерфейса пользователя MS Windows). Его возможности - это методы симуляций нажатий комбинаций клавиш клавиатуры и мыши, функции управления окнами и его визуальными элементами. Решение, явно предлагаемое средствами AutoIt v3, его сценарием, обычно невозможно достичь коротким и понятным кодом какого-либо языка. "
А все остальное - доп. возможности, ни коим образом не преуменьшающие полезность основной специализации языка. Так что превращать автоит ни во что не нужно, его таким уже сделали, а потом лишь расширили функционал...
зык программирования - средство решения задач, поставленных перед программистом. »
Согласен
А написали его люди, стремящиеся программировать более эффективно, т.е. решать задачи, производя меньшее кол-во телодвижений. »
согласенпроцесс внедрения "тупых кликалок" называют еще "автоматизацией трудового процесса". »
Для автоматизации действий есть более понятный для юзера софт,тогда как автоит все же среда разработки.А все остальное - доп. возможности, ни коим образом не преуменьшающие полезность основной специализации языка. Так что превращать автоит ни во что не нужно, его таким уже сделали, а потом лишь расширили функционал... »
Расширили до среды программирования-и это важно.
Дальнейшее обсуждение,и глупые споры ни к чему не приведут...но я так понял,то что я пытался до вас донести вы так и не поняли(либо я не могу сформулировать для вас в понятной форме то что думаю...)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.