5

周りを見回してみましたが、COM / ActiveXの世界は非常に混乱しているようで、答えを納得させることができませんでした。
基本的に私が知りたいのは、GUIDが与えられた場合、ActiveXコントロールによって公開されているすべてのインターフェイス、プロパティ、およびメソッドを知る方法はありますか?私はどこかであなたがただ特定の財産がそこにあるかどうか尋ねなければならないことを読みました。しかし、何があるかを知る前に、どうすれば物件について尋ねることができますか?
IDispatchも似たようなことをしていると思いますが、使い方がわかりません。これが機能する場合は、できればC#の小さなスニペットで理解を深めることができます。

ありがとう

4

3 に答える 3

6

これには PowerShell を使用できます。

$a = new-object -comobject ProgId
#get properties
$a | Get-Member -membertype properties 
#or get all members
$a | Get-Member

また、C# ではType.GetMembers Methodを使用できます。

于 2014-08-20T16:38:01.743 に答える
0

MicrosoftのResourceToolkitでOLE/COMオブジェクトビューアを使用できます。すべてのプロパティ/メソッド/イベントなどが一覧表示されます。

于 2013-03-07T17:01:47.997 に答える
0

ActiveX コントロールは、自己記述的である必要はなく、サポートされているインターフェイスやプロパティを列挙できる必要もありません。他の COM クラスと同様に、特定のインターフェイスを実装し、特定の一連の必須インターフェイスを実装しているため、ホスト アプリケーションに埋め込むのに適しています。つまり、特定の有効な ActiveX コントロールのプロパティを見つけることができなくなる可能性があります。

ただし、与えられたコントロールがほとんどのコントロールと同じように動作する場合、このタスクを成功させることができる場合が非常に多いです。IProvideClassInfoコントロールの COM クラスには、通常、レジストリ リファレンスまたはインターフェイスを調べることで検出できるタイプ ライブラリがあります。そこからITypeInfoインターフェイスを保持すると、クラスの派生インターフェイスを特定IDispatchし、この情報を保持するタイプ ライブラリを使用してプロパティとメソッドを列挙できます。

于 2013-01-19T23:09:04.200 に答える