Показать полную графическую версию : [решено] Плагины для скрипта - реально ли ?
Задача:
Нужно сделать скрипт, который при определенных входных данных ($CmdLine[1]) вызывал функцию из доп. скрипта или сам доп. скрипт, учитывая что сам основной скрипт - компилированная программа.
Решение:
AutoIt specific command Line Switches
Form1: AutoIt3.exe [/ErrorStdOut] [/AutoIt3ExecuteScript] file [params ...]
Execute an AutoIt3 Script File
/ErrorStdOut Allows to redirect fatal error to StdOut which can be captured by an application as Scite editor. This switch can be used with a compiled script.
To execute a standard AutoIt Script File 'myscript.au3', use the command:
'AutoIt3.exe myscript.au3'
Form2: Compiled.exe [/ErrorStdOut] [params ...]
Execute an compiled AutoIt3 Script File produced with Aut2Exe.
Form3: Compiled.exe [/ErrorStdOut] [/AutoIt3ExecuteScript file] [params ...]
Execute another script file from a compiled AutoIt3 Script File. Then you don't need to fileinstall another copy of AutoIT3.exe in your compiled file.
Form4: AutoIt3.exe [/ErrorStdOut] /AutoIt3ExecuteLine "command line"
Execute one line of code.
To execute a single line of code, use the command:
Run(@AutoItExe & ' /AutoIt3ExecuteLine "MsgBox(0, ''Hello World!'', ''Hi!'')"')
The tray icon will not be displayed when using /AutoIt3ExecuteLine
NOTE: Correct usage of single- and double- quotation marks is important, even double single.
Belfigor
16-08-2009, 19:19
Select
Case $CmdLine[1] = 1
Run $Script1
Case $CmdLine[1] = 2
Run $Script2
Case $CmdLine[1] = 3
Run $Script3
EndSelect
Мб так? Поставить функцию которая будет прослушивать входящую информацию?
Дык дело в том что плагинов может быть 100 или 1 и просчитать их нереал, имена разные.
Я вот думаю: может выполнять ехе-шники, например если послано cmd то выполнится cmd.exe... но проблема в том что хотелось юы еще возвратные данные иметь, ошибки какие, проч.
FlatX007
16-08-2009, 19:28
$Key1 = "-Key1"
$Key2 = "-Key2"
Switch _CheckingKey(@Compiled, $CmdLineRaw)
Case 0
MsgBox(0, "", "Нет ключей")
Case 1
_1()
Case 2
_2()
EndSwitch
Func _1()
MsgBox(0, "", "Func _1()")
EndFunc ;==>_1
Func _2()
MsgBox(0, "", "Func _2()")
EndFunc ;==>_2
Func _CheckingKey($Compiled = 0, $Cmd_LineRaw = 0)
Switch $Cmd_LineRaw
Case $Key1
If $Compiled = 1 Then Return 1
Case $Key2
If $Compiled = 1 Then Return 2
Return 0
EndSwitch
EndFunc ;==>_CheckingKey
FlatX007, чета нопонял твой скрипт, да и судя по всему тут те же Case - нужно чтобы скрипт был компилиный а плагины выполнялись и чтоб-нибудь возвращали. А тут видимо уже прописано - это не вариант.
FlatX007
16-08-2009, 19:41
Ответ точно такойже как вопрос в шапке.
Ну объяснил бы, я в этом скрипте 0
FlatX007
16-08-2009, 20:02
Ты напиши что тебе нужно , подробно , для чего ...
Каков вопрос - таков ответ.
Требуется сделать так, чтобы скомпилированный скрипт умел выполнять другие нескомпилированные скрипты? Или что-то другое?
Известен ли заранее набор скриптов для выполнения?
Заранее ничего не известно. Есть основной скрипт (собственно который и нужен), а есть папка plugins (рядом), где есть пачка плагинов, их может быть 0-100000000 и т.д., каждый выполняет определенную функцию (к примеру - стирает файл), нужно чтобы основной скрипт послал команды так, чтобы этот плагин получал данные (ком.строка), и возвращал код по своему завершению, на котором и базируется ответ основного скрипта юзеру.
Вот так вот все не сложно :)
Так... Что есть плагин? Экзешник? Каким образом определяется его имя?
И как основной скрипт может сделать, чтобы плагин возвращал значение?
А вообще, для чего это надо? Может есть вариант попроще?
FlatX007
18-08-2009, 11:13
Плагины что из себя представляют ? *.exe или *.au3
Пагины *.au3 должны запускаться из основной программы так AutoIt3.exe myscript.au3 -Key1 -Key2 ???
Итак, плагины - exe файлы aka компилированный скрипт au3. Запускается plugin.exe /lala /blahC:\ и проч.
Я думаю если передать основному скрипту cmd net start, то пусть выполняется cmd.exe "net start", может так ?
FlatX007
18-08-2009, 12:03
Я ничего непонимаю , чё вы тут мудрите ... и нафиг эта галиматья нужна.
Команда cmd net start - для запуска службы - она сдесь причём ?
Компиляция скриптов - необходимость? Нельзя ли все функции занести в основной скрипт?
Ну пусть скрипт - не компиленый. но как тогда не изменяя его подключить плагины ?
Итак, если основной скрипт запускать так:
allscript.au3 cmd md C:\123
То должен запуститься:
plugins\cmd.au3 md C:\123
И вернуть основному скрипту одно из следующих:
Done
Error
Ну вот собственно как это релизовать, а если возможно - чтобы все это было в ехе.
AutoIt specific command Line Switches
Form1: AutoIt3.exe [/ErrorStdOut] [/AutoIt3ExecuteScript] file [params ...]
Execute an AutoIt3 Script File
/ErrorStdOut Allows to redirect fatal error to StdOut which can be captured by an application as Scite editor. This switch can be used with a compiled script.
To execute a standard AutoIt Script File 'myscript.au3', use the command:
'AutoIt3.exe myscript.au3'
Form2: Compiled.exe [/ErrorStdOut] [params ...]
Execute an compiled AutoIt3 Script File produced with Aut2Exe.
Form3: Compiled.exe [/ErrorStdOut] [/AutoIt3ExecuteScript file] [params ...]
Execute another script file from a compiled AutoIt3 Script File. Then you don't need to fileinstall another copy of AutoIT3.exe in your compiled file.
Form4: AutoIt3.exe [/ErrorStdOut] /AutoIt3ExecuteLine "command line"
Execute one line of code.
To execute a single line of code, use the command:
Run(@AutoItExe & ' /AutoIt3ExecuteLine "MsgBox(0, ''Hello World!'', ''Hi!'')"')
The tray icon will not be displayed when using /AutoIt3ExecuteLine
NOTE: Correct usage of single- and double- quotation marks is important, even double single.
Form3 and Form4 can be disabled for compiled script when using #NoAutoIt3Execute.
Воооот то что нужно!
Думаю так и буду запускать)
Хотя это из командной строки... а как из просто While1 WEnd это все ?
Есть ещё более жестокий метод))
Смотри функцию Execute
Если скрипт скомпилирован. Что тебе мешает запустить его ещй раз из самого себя?
Ну это уже изврат нереальный канешн) себя запускать - жуть.
Ехекут пробнем)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC