3

私はCOM+を扱って、いくつかの考古学を作っています

これまでのところ、COM+コンポーネントとして単純なCOMdllを登録することができました。

これで、この「foobar」com +コンポーネントと、そのインターフェイス、および呼び出したいメソッドができました。

私の質問は簡単です。このコンポーネントをどのように呼び出すのですか?

.NETまたはVB6の回答はすべて受け入れられます(コンポーネントがOKであることを確認する必要があります。クライアントは気にしないでください)

ありがとう

編集(06/03/09):まあ、私は混乱しています。正しく動作するために、私のCOM+コンポーネントはdllを登録する必要があります。なぜだめですか?しかし、それでは、COMではなくCOM+呼び出しを行っていることを確認するにはどうすればよいでしょうか。

4

4 に答える 4

2

可能な限り最も単純なVB.NETコードスニペット:

Dim myCom As Object
myCom = CreateObject("MyCom.ProgId")
myCom.Method(parms)

「MyCom.ProgId」をコンポーネントの実際のProgIdに置き換える必要があります。これは、コンポーネントサービス管理ツールのコンポーネントのプロパティの[全般]タブから取得できます(すでに把握しているようです)。

myCom.Method(parms)

は、メソッドが取るパラメーターを使用して、呼び出したいメソッドの単なるプレースホルダーです。

VB.NET構文のいくつかの例へのリンクは次のとおりです。

http://msdn.microsoft.com/library/de...eateObject.asp

http://www.samspublishing.com/articl...le.asp?p=25857

http://msdn.microsoft.com/library/en...asp?frame=true

于 2009-06-02T16:34:56.137 に答える
1

VB6のAdamのコードは似ています:

Dim myCom As Object
Set myCom = CreateObject("MyCom.ProgId")
myCom.Method(parms

この例はレイトバウンドであり、パフォーマンスが低下します。ペナルティを回避するために、メソッドを早期に呼び出すことができます。VB6またはVB.NETのいずれかで、COM + dllを参照に追加するだけで、次の方法でオブジェクトを呼び出すことができます。

VB6

dim myCom as MyCom.ProgId
set myCom = new MyCom.ProgId
myCom.Method

VB.NET

dim myCom as new MyCom.ProgId
myCom.Method(...)
于 2009-06-02T19:22:40.097 に答える
1

コンポーネントが呼び出されたときに応答することを確認するだけの場合は、VB6 / VB.NETで何かを構築するのではなく、簡単なVBScriptを使用してください。

 Dim o : Set o = CreateObject("Lib.Class")
 o.YourMethod "someParam"

コンポーネントサービスでCOM+アプリを監視して、要求されたクラスがスピンアップするかどうかを確認します。

于 2009-06-03T06:15:50.470 に答える
1

RMIにCOM+を使用する場合は、これを使用します

Dim o As Object
Set o = CreateObject("Lib.Class", "MYSERVER")

ここで、MYSERVERは、COM +アプリケーションが作成され、DLLが登録されているマシン名です。続いて

o.YourMethod "someParam"

リモートで呼び出されます。自動化互換インターフェースのみを使用している場合、COM+はRMIのプロキシーを正常に作成します。それ以外の場合は、クライアントマシンでtypelibを提供する必要があります。これは、個別のTLBまたはDLL自体にすることができます。

于 2009-06-03T10:37:01.997 に答える