私が書いたActiveXコントロールで非IDispatchメソッドを呼び出す際に問題があります。Webページ上の別のActiveXコントロールからActiveXコントロールを使用する
私は書いた2つの別々のActive Xオブジェクトを持つWebページを持っています。まず、最初に作成したオブジェクトのメソッドを呼び出して、共同作成できない新しいCOMオブジェクトへのインターフェイスポインタを返します。次に、この新しいオブジェクトのメソッドを2番目のActiveXオブジェクトを引数として渡します。このメソッドでは、QueryInterfaceを呼び出して、2番目のActiveXオブジェクトのプライベート/内部インターフェイスポインタを取得します。問題は、QueryInterfaceから返されたポインタが自分のオブジェクトへの有効なポインタではなく、それを使用しようとする試みがクラッシュすることです。
使用できる実際のオブジェクトとのインターフェイスを取得するにはどうすればよいですか?私のプライベートインターフェイスは構造体を使用しているので、IDispatchとの互換性はなく、内部インターフェイスであるため、タイプライブラリでは公開したくありません。
私はこれより早く自分自身に答えるべきでした。あなたは最初の部分で正しくあります - JavaScriptは自分自身のオブジェクトで自分のオブジェクトをラッピングしているので、2番目のActiveXコントロールに渡されるオブジェクトは自分のオブジェクトではなくJSラッパーです。 QueryInterfaceはJavaScriptオブジェクトによって処理され、私が何か他のことを質問したとしても、IDispatchインターフェイスへのポインタを返します。本当に奇妙です。 –