2014-11-21 50 views
0

好的,我在这里做错了什么? 我试图包括与这样的内部类一个VBScript:包括具有wsc文件的类

SCRIPT.VBS:

set inc = createobject("script.runner") 
inc.Include "class" 
set x = new test 
x.msg' here i get the error 'undefined class'! 

REGISTERED的.wsc文件:

<?xml version="1.0"?> 
<component> 
<registration 
description="wsc" 
progid="script.runner" 
version="1.00" 
classid="{f65e154c-43b3-4f8f-aa3d-535af68f51d1}" 
> 
</registration> 
<public> 
<method name="Include"> 
<PARAMETER name="Script"/> 
</method> 
</public> 
<script language="VBScript"> 
<![CDATA[ 
Sub Include(Script) 
ExecuteGlobal(CreateObject("scripting.filesystemobject").OpenTextFile(Script & ".vbs", 1).Readall & VBNewLine) 
End Sub 
]]> 
</script> 
</component> 

类。 VBS:

class test 
public sub msg 
msgbox "hi" 
end sub 
end class 

我在想也许我需要在wsc文件中定义它,如果我要使用类或什么的? 我不知道..

感谢您的帮助!

回答

0

VBscript的Execute(Global)和.COM是重复使用代码的非常不同的方式。你不应该混合它们。

.wsc允许您创建一个对象并使用它的方法和属性。这种方法(工厂)可能会创建并返回另一个对象。所以,如果你添加

<method name="mkTest"> 
</method> 
... 
Function mkTest() 
    Set mkTest = New test 
End Function 

您的.wsc和

set x = inc.mkTest 
x.msg 

您的.vbs,整个繁琐程序将 '工作'。

你应该想想你的现实世界中的任务,读取good book about .COM,并拿出不混合异构技术一个简单策略(也许小组包括()/ ExecuteGlobal方式勾勒here)。

0

这样做:

脚本

set inc = createobject("script.runner") 
inc.Include "C:\Users\GEEK\Desktop\small" 
set x = inc.AddClass("test") 
x.msg' here i get the error 'undefined class'! 

WSC方法中

Function AddClass(ClassName) 
execute("Set AddClass = New " & ClassName) 
end Function 

和Ekkehard.Horner, 你说得对。 我只是好奇如何解决,即使有更简单的方法 东西^^

感谢所有帮助有问题!

关于