从执行的c#应用程序访问VB脚本对象

本文关键字:VB 脚本 对象 访问 应用程序 执行 | 更新日期: 2023-09-27 18:04:02

一个VBScript被加载到另一个应用程序中,加载/执行VBScript的应用程序正在创建一个对象,因此可以从加载VBScript的应用程序中获取和设置变量。

在加载的VBScript中,我正在用以下命令读取一个变量:

ApplicationName.GetStringVariable("string1")

我正在用以下命令从VBScript执行我的c#应用程序:

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

我使用bWaitOnReturn,以便VBScript正在运行,而我的其他c#应用程序正在运行。但是我找不到一种方法来访问这个VBScript对象从我的c#应用程序。它告诉我这个物体不存在。这是我的c#代码:

我正在用以下代码从VBScript执行exe,试图访问VBScript对象:

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

我做错了什么?

从执行的c#应用程序访问VB脚本对象

当您运行TestAppDelete.exe时,您创建了一个新的进程。当您创建ScriptControlClass时,您将在新的进程中创建一个新的脚本上下文。当你将代码添加到使用ApplicationName的脚本时,该对象不存在,因此失败。

与其创建c# .exe,不如创建一个COM兼容的c# .dll。