2

私はこれが長いショットかもしれないことを知っているので、私はCOMについてあまりよく知らないので私を許してください。

基本的に、私がやろうとしているのは、実行中のアプリケーションのIUnknownインターフェイスへのポインターを取得することです。問題は、アプリについて私が知っている唯一のことは、メインウィンドウのハンドルです。

これは可能でしょうか?

4

2 に答える 2

3

これを行う「標準」の方法は、AccessibleObjectFromWindowWin32APIを使用することです。とはいえ、実際にこれをサポートするものは多くないため、マイレージは異なる場合があります。PInvokeをAccessibleObjectFromWindowに移動し、HWNDを渡してから、戻ってきたIntPtrでMarshal.GetObjectForIUnknownを使用します。

于 2009-11-19T04:29:59.943 に答える
1

時々そうです、ウィンドウがあなたのプロセスにあり(そうでなければ別のプロセスのポインタはあなたにとって無意味です)、ウィンドウのライターはそれがメッセージを期待していてインターフェースを返すことを明示的にあなたに伝えます。ほとんどの場合、必要がない場合、人々は通常ハックを作成せず、作成者に未知のメッセージを送信すると、予測できない動作が発生します。

于 2009-11-19T01:03:07.360 に答える