2009-11-01 24 views
5

我正在嘗試編寫WSH登錄腳本。整個公司的管理員需要能夠自定義腳本的執行,併爲特定位置和用戶執行其他腳本。爲了使他們的工作更輕鬆,我想提供一個管理員可以在其腳本中訪問的API。如果我使用JScript編寫我的API,是否可以初始化通過VBScript定義的對象?例如,請考慮以下代碼:我可以使用VBScript初始化用JScript編寫的對象嗎?

<!-- The WSF logon script file --> 
<package> 
    <job> 
     <script language="JScript"> 
      // A demonstration function 
      function OverNineThousand() { 
       return 9001; 
      } 

      // A demonstration "class" 
      function WorkstationClass() { 
       var os = "Windows XP"; 

       this.getOperatingSystem = function() { 
        return os; 
       } 
      } 
     </script> 

     <script language="VBScript"> 
      Dim bigNumber, workstation 

      '// This assignment works properly. 
      bigNumber = OverNineThousand() 

      '// This assignment causes an error. Am I doing it wrong? 
      Set workstation = New WorkstationClass() 

      '// Execution never gets this far 
      WScript.Echo workstation.getOperatingSystem() 
     </script> 
    </job> 
</package> 

有沒有什麼辦法可以完成我想要做的事情?

回答

7

VBScript和JScript似乎不同意如何初始化一個對象。但是,一旦對象被初始化,它就會被兩種語言所識別。爲了解決這個問題,我必須在JScript中創建對象,然後將其返回給VBScript調用者,如下所示。

<package> 
    <job> 
     <script language="JScript"> 
      // A demonstration "class" 
      function WorkstationClass() { 
       var os = "Windows XP"; 

       this.getOperatingSystem = function() { 
        return os; 
       } 
      } 

      function CreateWorkstation() { 
       return new WorkstationClass(); 
      } 
     </script> 

     <script language="VBScript"> 
      Dim workstation 

      '// This assignment causes an error. 
      '// Set workstation = New WorkstationClass() 

      '// This works! 
      Set workstation = CreateWorkstation() 

      '// Prints "Windows XP" 
      WScript.Echo workstation.getOperatingSystem() 
     </script> 
    </job> 
</package> 
+0

正是我所需要的 – JoshHetland 2011-12-02 14:34:25

相關問題