2016-04-07 22 views
0

VB6で作成した複雑なActiveXコントロールのタイプライブラリのIDLファイルを取得しようとしています。私は64ビットWin10 Proを使って開発したPC上でOleView.exeを使ってこれをやろうとしました。 OleViewのx64バージョンは、OCXファイルまたはそれから抽出されたTLBを開こうとするとクラッシュするだけです。 x86バージョンは、次のエラーボックス2回私を示していますOleView.exeは、VB6から抽出したタイプライブラリを逆コンパイルできません。OCX

OleView.exe: Error loading type library (TYPE_E_CANTLOADLIBRARY)

をおそらく、TLBファイルは、いくつかのimportlibディレクティブを持っており、OLEVIEWは、参照ファイルを見つけることができません。私はOLEVIEWにコンポーネントのOCAファイルを見ることができるし、そのIDL同等物は、上部にこれらの行が含まれています

// TLib :  // TLib : Visual Basic objects and procedures : {FCFB3D2E-A0FA-1068-A738-08002B3371B5} 
importlib("VB6.OLB"); 
// TLib : OLE Automation : {00020430-0000-0000-C000-000000000046} 
importlib("stdole2.tlb"); 
// TLib : Visual Basic runtime objects and procedures : {EA544A21-C82D-11D1-A3E4-00A0C90AEA82} 
importlib("3"); 

OLEVIEWでこの問題を解決する方法は?または、TLBをIDLに変換する別のツールがありますか?

+0

タイプライブラリは* registry *には見つかりません。ファイルとは関係ありません。マシンにVB6がインストールされ、このOCXが正しく登録されている必要があります。 –

+0

@ HansPassant、VB6は元のVS98 CDからインストールされました。 VB6.OLBが登録されています:レジストリキー 'HKEY_CLASSES_ROOT \ TypeLib \ {FCFB3D2E-A0FA-1068-A738-08002B3371B5} \ 6.0 \ 9 \ win32'が正しいファイルの場所を指しています。唯一の問題は、 'C:\ Windows \ SysWOW64 \ msvbvm60.dll \ 3'を指す" 3 "ライブラリです。他の考え? – TecMan

+0

SysInternalsのプロセスモニタを使用してください。 oleview.exeがレジストリを検索し、それが不平を言っているタイプライブラリを見つけられないのを見るべきです。 –

答えて

0

OCAファイルに格納されているコンポーネントの拡張タイプライブラリをOleWoo toolを使用して対応するIDLファイルに変換できます。しかし、私が得たIDLは、多くの場所で正しくありません。セミコロンなどは含まれていませんが、少なくとも、コンポーネントに実装されているCOMインターフェイスの一般的な図を取得するために使用できます。

関連する問題