VBscript错误:需要对象:' wscript'

时间:2016-02-03 17:48:13

标签: vbscript delphi-xe

有人能告诉我为什么这行错误:

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

它给出了这个错误:

  

需要的对象:' wscript'

如果我运行此代码:

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

我得到了这个错误:

  

对象不支持此属性或方法:' CreateObject'

我在Delphi应用程序中运行vbscript。

2 个答案:

答案 0 :(得分:2)

  

需要的对象:' wscript'

     

我在Delphi应用程序中运行vbscript。

这就是您的脚本失败的原因。 t对象仅在脚本由wscript运行时定义。要执行您尝试的操作,您需要实现自己的对象并将其提供给脚本环境,以便脚本代码在需要时访问。

假设您使用IActiveScript来运行脚本,您可以编写实现IDispatch接口的COM Automation对象,然后您可以创建该对象的实例并将其提供给{ {3}}之前调用IActiveScript.AddNamedItem()开始运行脚本的方法。

例如,编写一个公开自己的wscript.exe方法的Automation对象,将其提供给名为CreateObject()的{​​{1}},然后脚本可以调用AddNamedItem() 。然后,您的App实现可以创建真实请求的对象,并根据需要将事件处理程序连接到它。要将事件重新激活回脚本,请使用IActiveScript.SetScriptState()方法检索脚本中定义的所需过程的App.CreateObject(),然后将IActiveScript.GetScriptDispatch()与DISPID 0和{{1}一起使用} flag用所需的输入参数执行该过程。

您的对象可以实现您希望脚本有权访问的任何属性和方法。

答案 1 :(得分:0)

您的脚本失败的原因是出现了几次。

  1. 不要不要使用“WScript”作为对象,尤其是在Windows-Based Script Host(或WSH)中编码时,因为程序假定您正在运行{{ 1}} 或调用 wscript.exe 命令。
  2. 使用WScript!如果第一条规则不为空,这就是原因。在 VBScript 中使用命令“Dim”要求用户Option Explicit 任何 Dim 或调用 object

一个固定的代码是:

object