1

VBScript を介してスクリプトを作成できるサードパーティ アプリケーションがあります。ここで、実行中の .NET アプリケーションをそこから呼び出したいと考えています。COM でこれを行いたい場合は、ExeComServer. 私のワークフローではこれができないという問題があります。厳密な名前のため、COM+ サーバーも不可能です。

オブジェクトを VBScript から .NET に転送する必要がありました。

4

2 に答える 2

1

COMに問題がない場合は、VBScriptのソケットを使用してみることができますが、あらゆる種類の問題が発生します。購入できるサードパーティのCOMベースのソケットライブラリがいくつかありますが、私はそれらを使用したことがないため、それらのいずれもお勧めできません。ポートをリッスンしてスクリプトと通信するには、.NETアプリケーションもかなり大幅に変更する必要があります。これはある程度の作業になります。

私が考えることができるもう1つの可能なオプションは、.NETでCOM対応の.dllを作成することです。これは、ソケットロジックを実装し、.NETアプリケーションと通信します。次に、VBScriptからこのオブジェクトのインスタンスを作成し、COMを介してそれと通信できます。.dllは、ソケットを使用して.NET.exeと通信します。これにより、ソケットの端に2つの.NETオブジェクトが作成されます。これを.NETに実装する方が簡単です。ソケットをリッスンするには、メインの.exeを変更する必要があります。

VBScriptはCOMを使用するように設計されているため、これはやや複雑です。COMを使用しないという要件は、実行できることを制限する要因です。(私のアイデアでさえCOMオブジェクトが含まれますが、少なくともEXE COMサーバーの要件は削除されます。)もっと簡単なオプションがあるかもしれません-これは私の頭のすぐ上にあります。

于 2012-09-21T07:19:25.783 に答える
0

実行中の .NET アプリケーションを呼び出す 1 つの方法は、.NET アプリケーションから WCF サービスを公開することです。VBScript は、たとえば XMLHTTP オブジェクトを使用して Web サービスを呼び出すことができます。

一方、あなたは次のようにも言いました。

オブジェクトを VBScript から .NET に転送する必要がありました。

これがCOMオブジェクトをマーシャリングすることを意味する場合、COMを使用する以外に選択肢はないと思います。

于 2012-09-21T08:53:12.983 に答える