3

ActiveX の COM 依存関係を見つける方法はないと確信していましたが、驚いたことに、OLEVIEW には次のようなコメントが表示されます。

// TLib : // TLib : OLE オートメーション : {00020430-0000-0000-C000-000000000046} importlib("stdole2.tlb"); // TLib : Visual Basic ランタイム オブジェクトとプロシージャ: {EA544A21-C82D-11D1-A3E4-00A0C90AEA82} importlib("3");

TypeLibInfoFromFile を使用して同じ情報を抽出しようとしましたが、MSDN で見つけたものに基づいて、この情報を提供する Api はありません。この情報を OCX または Tlb ファイルから抽出する方法を知っていますか? すべての ocx が vb6 でコンパイルされていることを知っているので、インポートされた (明示的にコードに含まれていない) インターフェイスについてこの情報を信頼できますか?

4

1 に答える 1

2

さて、私はこの質問に対する答えを見つけました。誰かが同じ質問を検索する場合に備えて、ここに書き込みます。いくつかの依存関係を見つけることは可能ですが、それらすべてを見つけたかどうかはわかりません。基本的に、すべてのタイプとインターフェイスを列挙する必要があります。モジュール内のすべてのタイプを見つけるには、各タイプのすべてのメンバーを列挙する必要があります。見つけたすべてのタイプについて、外部のTypeLibにあるかどうかを確認する必要があります。最後に、参照されているTypelibのリストがあります。

このメソッドの問題は、パブリックインターフェイスで使用されているタイプ(フィールド、戻り値、パラメーター)のみが見つかり、すべてのローカルオブジェクトまたは動的に作成されたオブジェクトを見逃していることにあります。それはあなたが実装のためにこのリンクをチェックすることができると言った、あるいはもっと良いのはこれです。

于 2011-04-03T22:47:34.160 に答える