Что нового

Возможны ли вставки кода в autoit?

codw

Новичок
Сообщения
19
Репутация
1
Что я пытаюсь выполнить?
Пытаюсь выполнить код autoit из файла

Как я это пытался выполнить?
Код:
hotkeyset("{f1}","start")

while 1
	sleep(40)
wend

func start()

	local $data = FileRead("eval.txt")

	execute($data)

	eval($data)
endfunc


Что я ожидаю от выполненных действии?
Ожидаю появления диалоговых окон MsgBox
Содержание файла eval.txt:
Код:
msgbox(0,"","eval.txt line 1")
msgbox(0,"","eval.txt line 2")
msgbox(0,"","eval.txt line 3")


Что происходит на самом деле?
Ничего не происходит
 
Сообщения
142
Репутация
-3
execute и eval не для этих целей, они для строк.
Тебе нужен #include
 
Автор
C

codw

Новичок
Сообщения
19
Репутация
1
спасибо

мне нужно, чтобы загружался и выполнялся всегда свежий сценарий, #include выполняет только старый экземпляр, загруженный в первый раз
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
codw [?]
чтобы загружался и выполнялся всегда свежий сценарий
Код:
#pragma compile(AutoItExecuteAllowed, True)

hotkeyset("{f1}","start")

while 1
    sleep(40)
wend

func start()
    RunWait(@AutoItExe & " /AutoIt3ExecuteScript eval.txt")
endfunc
 
Автор
C

codw

Новичок
Сообщения
19
Репутация
1
мне нужна какая-то реализация вставки кода, запуск внешнего сценария не подходит, так как это уже отдельный сценарий в который придется копировать
все функции и переменные с основного модуля, попробую объяснить:

есть скрипт с кучей функций и переменных, это основной модуль который постоянно работает, при нажатии на кнопку должна проиходить загрузка, вставка и исполнение определенного кода (набор настроек, логики и исполнения), который я могу в любой момент поправить не меняя основного модуля, думал реализовать это через eval как в JavaScript, не получилось

писать интерпретатор кода слишком сложно
 

hedji

Продвинутый
Сообщения
409
Репутация
94
Файл скрипта:
Код:
#include <Eval.au3>

hotkeyset("{f1}","start")

while 1
    sleep(40)
wend

func start()
    $param = Random(1, 4, 1)
	_evalfunc($param)
endfunc


Файл Eval.au3
Код:
Func _evalfunc($param1)
	Select
		Case $param1 = 1
			MsgBox(0, "", "eval.txt line 1")
		Case $param1 = 2
			MsgBox(0, "", "eval.txt line 2")
		Case $param1 = 3
			MsgBox(0, "", "eval.txt line 3")
		Case Else
			MsgBox(0, "", "no line")
	EndSelect
EndFunc


Пока работает
Код:
while 1
    sleep(40)
wend

разумеется никакие изменения в Eval.au3 не отобразятся на работе скрипта, но при перезапуске все применится.

здесь еще посмотрите
 
Автор
C

codw

Новичок
Сообщения
19
Репутация
1
CreatoR
что-то я не понимаю, где брать файл PluginInclude.au3?
Если это под спойлером (Содержимое динамической библиотеки) то там нет упоминания о функции _PluginInclude_AddInclude, там вообще о Plugin нет никакого упоминания,прикрепленный файл в теме не нашел, просто написано: Файл: Прикреплён. без ссылок
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
codw
Поправил.
 
Верх