2014-08-30 1 views
1

런타임에 스크립트의 모든 변수 값을 가져 오는 방법이 있습니까?msscript 컨트롤을 사용하여 vbscript에서 모든 변수 값 가져 오기

다음 vbscript 코드를 고려하십시오.

var1= 5 
Var2= 6 

For i=0 To 5 
    Msgbox i 
Next 

어떻게 내가 런타임에 모든 변수를 검색 할 수 있어야한다 msscript 컨트롤을 사용하여 구현합니까?

vbscript 용 디버거를 구현하고자 할 때 아래와 같이 런타임에 모든 변수 목록을 가질 수 있습니다.

var1=5 
Var2=6 
i=5 

이 문제에 대한 도움을 주시면 감사하겠습니다.

미리 감사드립니다.

답변

1

여기 있습니다. 아래 코드를 VBScript 파일로 저장하십시오.

' VBS code variables to be fetched from 
sVBScriptDebug = _ 
    "var1= 5" & vbCrLf & _ 
    "Var2= 6" & vbCrLf & _ 
    vbCrLf & _ 
    "For i=0 To 5" & vbCrLf & _ 
    " Msgbox i" & vbCrLf & _ 
    "Next" 

' ScriptControl to be used for debug purposes 
Set oScrCtlDebug = CreateObject("MSScriptControl.ScriptControl") 
oScrCtlDebug.Language = "VBScript" 
oScrCtlDebug.AddCode sVBScriptDebug 
' Me object from debug script 
Set oMeDebug = oScrCtlDebug.Eval("Me") 

' ScriptControl for JScript utility function pushing all object's properties to array 
Set oScrCtlUtil = CreateObject("MSScriptControl.ScriptControl") 
oScrCtlUtil.Language = "JavaScript" 
oScrCtlUtil.Eval("Enum=function(x){this.x=new Array();for (var i in x) {this.x[i]=i};return this.x}") 
' Retrieve JScript this object 
Set oJSGlobal = oScrCtlUtil.Eval("this") 

' Cycle through all debug script Me object properties, that actually are fetched global scope variables 
sRes = "" 
For Each sVar In oJSGlobal.Enum(oMeDebug) 
    sRes = sRes & sVar & "=" & oScrCtlDebug.Eval(sVar) & vbCrLf 
Next 
MsgBox sRes 
관련 문제