2014-11-21 6 views
0

좋아, 내가 뭘 잘못 했니?wsc 파일이있는 클래스 포함

SCRIPT.VBS :

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

하여 등록 정보 .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> 

CLASS 내가 이런 식으로 내부 클래스와 VBScript를 포함하기 위해 노력하고있어. VBS :

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

클래스를 사용하려고한다면 wsc 파일에서 정의해야 할 수도 있습니다. 잘 모르겠 음 ..

어떤 도움을 주셔서 감사합니다!

답변

0

VBscript의 Execute (Global) 및 .COM은 코드를 다시 사용하는 매우 다른 방법입니다. 당신은 그들을 섞어서는 안됩니다.

.wsc를 사용하면 하나의 개체를 만들고 해당 개체의 메서드와 속성을 사용할 수 있습니다. 이러한 메소드 (팩토리)는 다른 객체를 생성하고 반환 할 수 있습니다. 그래서 당신은, 당신의 .VBS에 전체 데데 한 것 '작업'을

<method name="mkTest"> 
</method> 
... 
Function mkTest() 
    Set mkTest = New test 
End Function 
당신의 .wsc에

set x = inc.mkTest 
x.msg 

를 추가합니다.

당신은 good book about .COM을 읽고, 귀하의 실제 작업에 대해 생각하고, 이기종 기술을 혼합하지 않는 간단한 전략 (아마도 서브가 포함()/ExecuteGlobal 접근 방식은 here을 스케치)을 마련한다

.

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

및 Ekkehard.Horner, 네 말이 맞아 WSC 방법 내부

스크립트

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'! 

:

0

이했다. 더 쉬운 방법이있을 때에도 문제를 해결하는 방법에 대해 궁금합니다. 뭔가 ^^

고마워요!

안부