2016-02-03 3 views
-1

Может кто-нибудь сказать мне, почему эта ошибка строки:VBscript ошибка 'Wscript'

set my_obj = wscript.CreateObject("ObjectTest","pref_") 

Это дает эту ошибку:

Object required: 'wscript'

Если я запускаю этот код:

Set WScript = CreateObject("WScript.Shell") 
set my_obj = CreateObject("ObjectTest","pref_") 

Я получаю эту ошибку вместо:

Object doesn't support this property or method: 'CreateObject'

Я запускаю vbscript из приложения Delphi.

+0

Подобная ошибка может быть сгенерирована, если вы запускаете тот же скрипт в этом приложении: http://www.scalabium.com/smscript.htm – Walid

ответ

2

Object required: 'wscript'

I'm running the vbscript from within a Delphi app.

Именно поэтому ваш скрипт терпит неудачу. Объект wscript определяется только тогда, когда скрипт запущен wscript.exe. Чтобы сделать то, что вы пытаетесь, вам нужно реализовать свой собственный объект и предоставить его среде сценария для получения кода сценария, когда это необходимо.

Предполагая, что вы используете IActiveScript для запуска сценария, вы можете написать объект COM Automation, который реализует интерфейс IDispatch, а затем вы можете создать экземпляр этого объекта и передать его методу IActiveScript.AddNamedItem() до этого вызова IActiveScript.SetScriptState() начать запуск сценария.

Например, написать объект автоматизации, который предоставляет свой собственный CreateObject() метод, дать ему AddNamedItem() с именем App, а затем сценарий может позвонить App.CreateObject(). Ваша реализация CreateObject() может затем создать реальный запрошенный объект и подключить к нему обработчики событий по мере необходимости. Чтобы запустить события в сценарий, используйте метод IActiveScript.GetScriptDispatch() для извлечения IDispatch для требуемой процедуры, определенной в скрипте, а затем используйте IDispatch.Invoke() с DISPID 0 и флагом DISPATCH_METHOD для выполнения этой процедуры с требуемыми входными параметрами.

Ваш объект может реализовать любые свойства и методы, к которым должен иметь доступ сценарий.