【问题标题】:Access a VB script object from executed C# application从执行的 C# 应用程序访问 VB 脚本对象
【发布时间】:2011-07-30 05:18:55
【问题描述】:

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

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

ApplicationName.GetStringVariable("string1")

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

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\")");

我做错了什么?

【问题讨论】:

    标签: c# vbscript


    【解决方案1】:

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

    考虑创建兼容 COM 的 C# .dll,而不是创建 C# .exe。

    【讨论】:

    • 有什么方法可以找到该特定进程并直接访问该对象?
    猜你喜欢
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 2011-07-10
    • 2014-07-20
    • 1970-01-01
    • 2022-10-18
    • 2010-10-18
    • 1970-01-01
    相关资源
    最近更新 更多