Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Плагины для скрипта - реально ли ? (http://forum.oszone.net/showthread.php?t=148122)

Nik_rus 16-08-2009 19:05 1194963

Плагины для скрипта - реально ли ?
 
Задача:
Нужно сделать скрипт, который при определенных входных данных ($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 1194976

Select
Case $CmdLine[1] = 1
Run $Script1
Case $CmdLine[1] = 2
Run $Script2
Case $CmdLine[1] = 3
Run $Script3
EndSelect

Мб так? Поставить функцию которая будет прослушивать входящую информацию?

Nik_rus 16-08-2009 19:26 1194981

Дык дело в том что плагинов может быть 100 или 1 и просчитать их нереал, имена разные.
Я вот думаю: может выполнять ехе-шники, например если послано cmd то выполнится cmd.exe... но проблема в том что хотелось юы еще возвратные данные иметь, ошибки какие, проч.

FlatX007 16-08-2009 19:28 1194982

Код:

$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


Nik_rus 16-08-2009 19:37 1194985

FlatX007, чета нопонял твой скрипт, да и судя по всему тут те же Case - нужно чтобы скрипт был компилиный а плагины выполнялись и чтоб-нибудь возвращали. А тут видимо уже прописано - это не вариант.

FlatX007 16-08-2009 19:41 1194986

Ответ точно такойже как вопрос в шапке.

Nik_rus 16-08-2009 19:51 1194996

Ну объяснил бы, я в этом скрипте 0

FlatX007 16-08-2009 20:02 1195003

Ты напиши что тебе нужно , подробно , для чего ...

SyDr 16-08-2009 20:09 1195007

Каков вопрос - таков ответ.

Требуется сделать так, чтобы скомпилированный скрипт умел выполнять другие нескомпилированные скрипты? Или что-то другое?
Известен ли заранее набор скриптов для выполнения?

Nik_rus 18-08-2009 10:50 1196433

Заранее ничего не известно. Есть основной скрипт (собственно который и нужен), а есть папка plugins (рядом), где есть пачка плагинов, их может быть 0-100000000 и т.д., каждый выполняет определенную функцию (к примеру - стирает файл), нужно чтобы основной скрипт послал команды так, чтобы этот плагин получал данные (ком.строка), и возвращал код по своему завершению, на котором и базируется ответ основного скрипта юзеру.
Вот так вот все не сложно :)

SyDr 18-08-2009 11:03 1196444

Так... Что есть плагин? Экзешник? Каким образом определяется его имя?

И как основной скрипт может сделать, чтобы плагин возвращал значение?


А вообще, для чего это надо? Может есть вариант попроще?

FlatX007 18-08-2009 11:13 1196450

Плагины что из себя представляют ? *.exe или *.au3

Пагины *.au3 должны запускаться из основной программы так AutoIt3.exe myscript.au3 -Key1 -Key2 ???

Nik_rus 18-08-2009 11:55 1196489

Итак, плагины - exe файлы aka компилированный скрипт au3. Запускается plugin.exe /lala /blahC:\ и проч.
Я думаю если передать основному скрипту cmd net start, то пусть выполняется cmd.exe "net start", может так ?

FlatX007 18-08-2009 12:03 1196502

Я ничего непонимаю , чё вы тут мудрите ... и нафиг эта галиматья нужна.

Команда cmd net start - для запуска службы - она сдесь причём ?

SyDr 18-08-2009 12:16 1196520

Компиляция скриптов - необходимость? Нельзя ли все функции занести в основной скрипт?

Nik_rus 18-08-2009 16:21 1196734

Ну пусть скрипт - не компиленый. но как тогда не изменяя его подключить плагины ?
Итак, если основной скрипт запускать так:
Код:

allscript.au3 cmd md C:\123
То должен запуститься:
Код:

plugins\cmd.au3 md C:\123
И вернуть основному скрипту одно из следующих:
Код:

Done
Error

Ну вот собственно как это релизовать, а если возможно - чтобы все это было в ехе.

SyDr 18-08-2009 16:25 1196736

Код:

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.

Nik_rus 18-08-2009 16:38 1196749

Воооот то что нужно!
Думаю так и буду запускать)
Хотя это из командной строки... а как из просто While1 WEnd это все ?

SyDr 18-08-2009 17:04 1196771

Есть ещё более жестокий метод))

Смотри функцию Execute


Если скрипт скомпилирован. Что тебе мешает запустить его ещй раз из самого себя?

Nik_rus 18-08-2009 17:19 1196786

Ну это уже изврат нереальный канешн) себя запускать - жуть.
Ехекут пробнем)


Время: 13:29.

Время: 13:29.
© OSzone.net 2001-