3

我们正在使用 interop.msscriptcontrol.dll 来执行简单的 VBScript 变量代码(“Today - 1”之类的东西)。我们的应用程序是除此之外的非 COM 组件。我们已经搜索了 VBScript 的 .Net 替代品,但一直找不到。

.Net 有 VBScripting 替代品吗?

4

2 回答 2

2

在下面的示例中,我将让 WebBrowser 控件评估 VBScript 表达式“Now - 1”并将结果嵌入到 WebBrowser 的 document.title 中,以便我可以在 C# 中获取它:

WebBrowser wb = new WebBrowser();
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(
    (object _sender, WebBrowserDocumentCompletedEventArgs _e) =>
    {
        MessageBox.Show(wb.Document.Title);
    }
);
wb.DocumentText = @"
<HTML>
<HEAD>
<TITLE>Hello</TITLE>
<SCRIPT language=""VBScript"">
document.title = Now - 1
</SCRIPT>
</HEAD>
<BODY/>
</HTML>";

显然,这种方法存在以下问题:

  • 结果作为字符串处理
  • 结果需要异步处理
  • 糟糕的代码注入会导致无效的结果
  • 它可能表现不佳,并可能导致您的应用程序出现瓶颈

我的直觉是这种方法可能比您当前使用的方法更糟。

于 2012-05-08T10:10:19.000 回答
2

我最终使用免费的 Codefluent 运行时引擎来替换 msscriptcontrol.dll:

http://www.softfluent.com/products/codefluent-runtime-client

于 2014-12-17T20:59:37.503 回答