как научить wscript выполнять вызовы своих ф-ций

Программирование на Active Server Pages и VBScript.
Fokin Max
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 26.04.2006 (Ср) 10:05
Откуда: Москва

как научить wscript выполнять вызовы своих ф-ций

Сообщение Fokin Max » 26.04.2006 (Ср) 10:21

Доброе утро,

Преамбула:
Заказчик поставил софт (эмулятор железа) и программу выполняющую скрипты для работы с этим эмулятором. Скрипты могут быть написаны на “подмножестве” VBScript.
(именно на “подмножестве”, потому что добавлены некоторые специфические ф-ции для работы с эмулятором, нашел эти ф-ции, импортировав в среду дельфи поставленные библиотеки, в поставленных dll-ках)
Вопрос:
В связи с тем что программа выполняющая скрипты вызывает очень большие нарекания
Можно ли научить стандартный VBScript выполнять вызовы из этих библиотек, и если можно то как?
То есть сей час я понимаю что смогу написать достаточно нормальную среду выполняющую обычные VBScript файлы путем вызова wscript.exe с моими файлами,
Но как научить wscript.exe (или другие подобные программы) выполнять вызовы ф-ций
Из dll файлов?

smaharbA
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 16.06.2005 (Чт) 5:08

Сообщение smaharbA » 26.04.2006 (Ср) 10:38

1. Учить матчасть
2. надо чтобы приложение/библиотека работала как автоматионсервер(ОЛЕ) и у нее были нужные методы
3. можешь потренироваться на ИЕ или офисе, методов при вызове из vbscript/javascript в них предостаточно
Я конечно далек от мысли...(с)

Fokin Max
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 26.04.2006 (Ср) 10:05
Откуда: Москва

Может быть я достаточно сумбурно выразил свою мысль но,

Сообщение Fokin Max » 26.04.2006 (Ср) 12:30

Может быть я достаточно сумбурно выразил свою мысль но,
Если это возможно я хотел бы получить информацию о том как научить VBScript
выполнять экспортируемые ф-ции из DLL файлов.

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

пример:
в DLL файле живет ф-ция OutputLog с параметрами вывода level и Str
level уровень логирования
Str выводимая в лог строка

это ф-ция, которую заказчик вставил в свое подмножество, встроенаая
и в скрипте она вызывается как допустим

OutputLog 2, "mama"

Так вот вопрос как научить VBScript выполнять такой вызов ф-ции

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 26.04.2006 (Ср) 12:55

Нужно создать в программе, которая будет выполнять скрипты, класс с публичными методами, вызывающими эти функции, и передать экземпляр этого класса в Script Control. Вызов будет выглядеть как MyClass.OutputLog level, str
Лучший способ понять что-то самому — объяснить это другому.

Fokin Max
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 26.04.2006 (Ср) 10:05
Откуда: Москва

Сообщение Fokin Max » 26.04.2006 (Ср) 13:03

Уважаемый Antonariy
если можно более подробно

сей час я думаю что необходимо
1) проверять скрипт на наличие таких "нестандартных" ф-ций и заменять их на MyClass.OutputLog level, str
то есть делать как бы компилированый код своего скрипта
2)инициализировать Script Control
3)передавать на выполнение свой скомпилированный файл

и Если можно просветите меня или укажите где можно
прочитать про подключение или соэдание библиотек для выполнения скрипта. Ведь все ф-ции в один скритп не положишь

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 26.04.2006 (Ср) 13:28

Для начала подробности о програмном комплексе. Что представляет собой "программа выполняющая скрипты для работы с этим эмулятором"? Можно ли ее переписать? Причем тут ASP?

В догонку: модно написать ActixeX dll, вызывающую необходимые функции, а в скрипте писать:
Код: Выделить всё
Dim obj
Set obj = CreateObject("MyDLL.MyClass")
obj.OutputLog level, str


Это, как мне представляется, самый простой способ, без всяких контролов и дополнительных программ, wscript вполне с этим справится.
Лучший способ понять что-то самому — объяснить это другому.

Fokin Max
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 26.04.2006 (Ср) 10:05
Откуда: Москва

Сообщение Fokin Max » 26.04.2006 (Ср) 13:37

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

ТО есть мой первый вопрос в том как организовать
пространство проекта, что бы можно было корректно вызвать
эту ф-цию или процедуру из другого скрипта?

На второй вопрос Вы очень хорошо ответили, спасибо

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 26.04.2006 (Ср) 14:43

Ага. Все таки лучше задействовать Script Control и переписать прогу. Если это сделать, то можно дописать соответствующие функции на скрипте, например ту же OutputLog
Код: Выделить всё
Function OutputLog(level, str)
    Dim obj
    Set obj = CreateObject("MyDLL.MyClass")
    OutputLog = obj.OutputLog(level, str)
End Function

и подгружать ее текст в скриптконтрол вместе с исполняемым скриптом. MyClass можно будет реализовать непосредственно в проге и его экземпляр добавить в скриптконтрол, а все вместе будет выглядеть типа так:
Код: Выделить всё
Set sc = New ScriptControl
sc.AddObject "obj", New myClass
sc.AddCode sTextWithFuncs
'если нужно вернуть значение функции из скрипта
sc.AddCode sScriptToExec
r = sc.Eval("SomeFuncFromScript")
'если просто выполнить содержимое
sc.ExecuteStatement sScriptToExec

Тогда скрипт-обертка для функции будет выглядеть так:
Код: Выделить всё
Function OutputLog(level, str)
    OutputLog = obj.OutputLog(level, str)
End Function

Благодаря оберткам экспортируемые функции будут прозрачны для всяких левосторонних скриптов и
1) проверять скрипт на наличие таких "нестандартных" ф-ций и заменять их на MyClass.OutputLog level, str
вовсе необязательно.
Лучший способ понять что-то самому — объяснить это другому.

Fokin Max
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 26.04.2006 (Ср) 10:05
Откуда: Москва

Сообщение Fokin Max » 26.04.2006 (Ср) 14:51

Уважаемый Antonariy
если можно еще более подробно про подгружение
в скриптконтрол других файлов которые содержат необходимые ф-ции.

ТО есть как загрузить сразу несколько файлов?
Что бы выполнялся один файл и он дергал бы ф-ции из других файлов

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 26.04.2006 (Ср) 15:09

sc.AddCode sTextWithFuncs
Куда уж подробнее? sTextWithFuncs - текстовая переменная, содержащая текст скрипта. Можно через AddCode подгрузить несколько текстов, главное чтобы в них не было функций с одинаковыми именами. Еще подробнее только в MSDN.
Лучший способ понять что-то самому — объяснить это другому.

Fokin Max
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 26.04.2006 (Ср) 10:05
Откуда: Москва

Сообщение Fokin Max » 26.04.2006 (Ср) 15:10

ОГРОМНОЕ СПАСИБО

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 26.04.2006 (Ср) 15:25

Тут все разжевано до мелочей.
Вложения
test.rar
(1.76 Кб) Скачиваний: 283
Лучший способ понять что-то самому — объяснить это другому.

smaharbA
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 16.06.2005 (Чт) 5:08

Сообщение smaharbA » 17.05.2006 (Ср) 5:23

главное чтобы в них не было функций с одинаковыми именами

Кстати это не так, можно и с одинаковыми, только надо добавлять модули а уж в них функции
Я конечно далек от мысли...(с)


Вернуться в ASP и VBScript

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26

    TopList