3

interop.msscriptcontrol.dllを使用して、単純なVBScript変数コード(「今日-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 に答える