1

Windows デスクバンドを (Windows SDK サンプルを使用して) 実装しましたが、それと通信する方法が必要です (別のアプリケーションで IPC を開始するための 1 つの呼び出し、IPC は既に動作しています)。

私の COM の経験は非常に限られていますが、私が見てきたことから推定すると、新しい COM インターフェイスを作成し、それをデスクバンド オブジェクト (IBandSite 経由でアクセスできる) に実装し、QueryInterface() を呼び出すことができるはずだと思います。独自のインターフェイスを接続し、それを使用してデスクバンドに直接電話をかけます。

私はこれを試しましたが、すぐに問題に遭遇しました(主な理由は、ほとんどの場合、実際に何をしているのかわかりません...)

それで、私の質問は次のとおりです。これは実行可能なアプローチですか、誰かがそれが実行可能な場合の進め方の概要を教えてもらえますか(または、役立つ可能性のあるリソースを指摘してください-COMの本を読むことはできませんが、これが私の最後のアプローチです) . そうでない場合、代替手段が思い浮かびますか?

お時間をありがとうございました。

レネ。

4

1 に答える 1

0

パスは次のとおりです。新しいインターフェイスを .idl ファイルに追加し、COM オブジェクトに対応する .idl ファイルに共同クラスがある場合は、その新しいインターフェイスを共同クラス定義にリストします。次に、.idl をコンパイルすると、識別子 (C++ IID および C++ インターフェイス定義) を含む .h ファイルと .c ファイルが得られます。

次に、COM オブジェクトの C++ クラスを C++ インターフェイスから継承し、そのすべてのメソッドを実装します。何らかの理由でメソッドを実装できない、または実装したくない場合はE_NOTIMPL、そのメソッドの実装から戻る必要があります。

最後に非常に重要な点が 1 つあります。それはQueryInterface()、COM オブジェクト クラスの動作を変更する必要があることです。ATL を使用する場合は、COM マップにエントリを追加する必要があります。ATL 変更を使用しない場合は、この質問QueryInterface()を参照して、複数の COM インターフェイスを実装する場合の実装方法を確認してください。QueryInterface()

于 2011-07-13T09:08:16.583 に答える