Что нового

[Сеть, интернет] Включение кусков кода из сети

avitaly

Новичок
Сообщения
6
Репутация
0
Господа, знатоки автоматизации, прошу у вас помощи.

Пишу скрипт для автоматизации вебсерфинга. Есть необходимость в получении кусков кода из сети. То есть, например, на компе запускается файл start.au3 с кодом:

MsgBox(0,"","Скрипт запущен")
...

и далее нужно сделать запрос на сервер, чтобы получить кусок кода с инструкциями и необходимыми функциями (которые постоянно обновляются). Типа - открыть браузер по умолчанию, распознать запущенный браузер, найти адресную строку, ввести в ней адрес поисковика, в поисковике вбить запрос, найти нужный сайт, кликнуть и произвести необходимые действия...

#include не хочет получать файлы из сети. Подскажите возможные решения
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Выполнить код требуется в контексте текущего процесса или допустимо его дублирование(перезапуск)?
 
Автор
A

avitaly

Новичок
Сообщения
6
Репутация
0
firex сказал(а):
Выполнить код требуется в контексте текущего процесса или допустимо его дублирование(перезапуск)?
Да, в контексте текущего процесса. Да изначально неправильно написал, что файл будет exe, а не start.au3, чтоб пользователям не приходилось еще и autoit устанавливать
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
avitaly
AutoIt не поддерживает динамическую подгрузку кода в исполняемый скрипт. Ваши варианты:
1) Написать Dll с необходимыми функциями, загружать ее и вызывать их.
2) Использовать http://autoit-script.ru/index.php?topic=18482.0
3) Перезапускать себя:
Код:
Run(@AutoItExe & '\AutoIt3ExecuteScript "C:\downloaded.au3"')
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Как вариант, можно скачивать уже готовые скрипты и выполнять их из основного кода. Или скачивать файл с "инструкциями", разбирать и выполнять нужные действия
Код:
InetGet()
InetRead()
 
Автор
A

avitaly

Новичок
Сообщения
6
Репутация
0
InnI сказал(а):
Как вариант, можно скачивать уже готовые скрипты и выполнять их из основного кода. Или скачивать файл с "инструкциями", разбирать и выполнять нужные действия
Код:
InetGet()
InetRead()
Так а как же его выполнить из основного кода, если код находится в переменной?

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

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
avitaly
если код находится в переменной
Вообще-то я говорил о файлах. Но из переменной тоже можно
Код:
$var = "MsgBox(0, '', 'begin') & @CRLF & MyFunc() & @CRLF & ConsoleWrite('end' & @CRLF)"
Execute($var)

Func MyFunc()
  For $i = 0 To 2
    MsgBox(0, "MyFunc", $i)
  Next
EndFunc
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
InnI
С циклами и сложными условиями беда. Хотя... с условиями еще можно выкрутиться, извратом.

Код:
Local $Mad = _
	'Assign("_RET",_Func()) & ' & _
	'(($_RET=1) ? (' & _ ;If $_RET = 1 Then
		'ConsoleWrite("One" & @CRLF) & ' & _
		'MsgBox(0,"","One")) : (' & _
	'($_RET=2) ? (' & _ ;ElseIf $_RET = 2 Then
		'ConsoleWrite("Two" & @CRLF) & ' & _
		'MsgBox(0,"","Two")) : (' & _
	'' & _ ;Else
		'ConsoleWrite("Three" & @CRLF) & ' & _
		'MsgBox(0,"","Three")) )) & ' & _
	'MsgBox(0, "", $_RET)'

Execute( $Mad )
ConsoleWrite( Eval( '_RET' ) & @CRLF)


Func _Func()
	Return Random( 1, 3, 1 )
EndFunc
 
Автор
A

avitaly

Новичок
Сообщения
6
Репутация
0
Придется обойтись без циклов, если нужно будет зациклиться, сервер будет высылать инструкции несколько раз
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
А что, не плохой вариант... Сначало скачиваем скрипт
Код:
InetGet("http://example.org/script1.au3", "C:\downloaded.au3", 1)

А потом
firex сказал(а):
Перезапускать себя:
Код:
Run(@AutoItExe & '\AutoIt3ExecuteScript "C:\downloaded.au3"')
Вот и всё...
 
Автор
A

avitaly

Новичок
Сообщения
6
Репутация
0
alex33 сказал(а):
А что, не плохой вариант... Сначало скачиваем скрипт
Код:
InetGet("http://example.org/script1.au3", "C:\downloaded.au3", 1)

А потом
firex сказал(а):
Перезапускать себя:
Код:
Run(@AutoItExe & '\AutoIt3ExecuteScript "C:\downloaded.au3"')
Вот и всё...
Для разработчика это приемлемо. Но на компы пользователей в таком случае придется еще и автоит ставить, что совсем не приемлемо. Да открытые коды на жестких дисках - это немного не то, что требуется
 

qqww22

Новичок
Сообщения
115
Репутация
4
avitaly сказал(а):
alex33 сказал(а):
А что, не плохой вариант... Сначало скачиваем скрипт
Код:
InetGet("http://example.org/script1.au3", "C:\downloaded.au3", 1)

А потом
firex сказал(а):
Перезапускать себя:
Код:
Run(@AutoItExe & '\AutoIt3ExecuteScript "C:\downloaded.au3"')
Вот и всё...
Для разработчика это приемлемо. Но на компы пользователей в таком случае придется еще и автоит ставить, что совсем не приемлемо. Да открытые коды на жестких дисках - это немного не то, что требуется
Не придётся,в ехе autoit уже есть внутренний исполнитель сценариев.

Тоесть exe autoit это скрипт + внутренний обработчик этого скрипта.

Только вот много вопрос для чего это нужно?? Скликать рекламу? или Пройти по партнёрке?
 
Верх