2011-07-29 35 views
1

VBScript加載到另一個應用程序中,加載/執行VBScript的應用程序正在創建一個對象,因此可以從加載VBScript的應用程序獲取和設置變量。從已執行的C#應用​​程序訪問VB腳本對象

在加載VBScript中我讀一個變量使用下面的命令:

ApplicationName.GetStringVariable("string1") 

我從VBScript中執行我的C#應用​​程序具有以下commnand:

Set WshShell = CreateObject("WScript.Shell") 
Return = WshShell.Run("c:\TestAppDelete.exe", 1, true) 

我用bWaitOnReturn,以便在運行其他C#應用程序時運行VBScript。但是我找不到從我的C#應用​​程序訪問這個VBScript對象的方法。它告訴我該對象不存在。這是我的C#代碼:

我從一個VBScript運行exe文件用下面的代碼試圖訪問的VBScript對象:

MSScriptControl.ScriptControlClass sc = new MSScriptControl.ScriptControlClass(); 
sc.Language = "VBScript"; 
sc.AddCode("MsgBox ApplicationName.GetStringVariable(\"string1\")"); 

我在做什麼錯?

回答

1

當您運行TestAppDelete.exe時,您將創建一個新的新過程。當您創建ScriptControlClass時,您將在全新的新流程中創建全新的腳本上下文。將代碼添加到使用ApplicationName的腳本中時,該對象不存在並因此失敗。

而不是創建一個C#.exe考慮創建一個COM兼容的C#.dll來代替。

+0

任何找到該特定進程並直接訪問對象的方法? – jmelhus

+0

@jmehlus:不。 – AnthonyWJones

相關問題