2014-08-30 72 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