2016-04-07 11 views
0

Ich versuche, die IDL-Datei für die Typbibliothek eines komplexen ActiveX-Steuerelements zu erstellen, das mit VB6 erstellt wird. Ich habe versucht, dies mit OleView.exe auf meinem Entwicklungs-PC mit 64-Bit-Win10 Pro zu tun. Die x64-Version von OleView stürzt einfach ab, wenn ich versuche, die OCX-Datei oder den daraus extrahierten TLB zu öffnen. Die x86-Version zeigt mir das folgende Fehlerfeld zweimal:OleView.exe kann die Typbibliothek, die aus VB6 OCX extrahiert wurde, nicht dekompilieren

OleView.exe: Error loading type library (TYPE_E_CANTLOADLIBRARY)

Vielleicht die TLB-Datei mehr importlib Richtlinien hat und OleView kann die referenzierten Dateien nicht finden. Ich konnte die OCA-Datei für die Komponente in OleView sehen, und seine IDL Äquivalent enthält diese Zeilen an der Spitze:

// 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"); 

Wie man dieses Problem mit OleView lösen? Oder gibt es ein anderes Tool, um TLB in IDL zu konvertieren?

+0

Es kann die Typbibliotheken in der * Registrierung * nicht finden, nichts mit Dateien zu tun. Sie müssen VB6 auf dem Computer installiert haben und diese OCX korrekt registriert haben. –

+0

@HansPassant, VB6 wurde von der ursprünglichen VS98-CD installiert. VB6.OLB ist registriert: sein Registrierungsschlüssel 'HKEY_CLASSES_ROOT \ TypeLib \ {FCFB3D2E-A0FA-1068-A738-08002B3371B5} \ 6.0 \ 9 \ win32' verweist auf den richtigen Speicherort. Das einzige Problem könnte sein, dass die Bibliothek "3" auf "C: \ Windows \ SysWOW64 \ msvbvm60.dll \ 3" zeigt. Irgendwelche anderen Gedanken? – TecMan

+0

Nun, keine Ahnung, verwenden Sie SysInternals Process Monitor. Sie sollten sehen, dass oleview.exe die Registrierung durchsucht und nicht die Typbibliothek findet, über die sie sich beschweren. –

Antwort

0

Ich könnte die erweiterte Typ-Bibliothek für meine Komponente in der OCA Datei in die entsprechende IDL-Datei mit der konvertieren. Allerdings ist die IDL, die ich bekommen habe, an vielen Stellen nicht korrekt. Es enthält keine Semikolons, etc. Es kann aber zumindest dazu verwendet werden, ein allgemeines Bild der in einer Komponente implementierten COM-Schnittstellen zu erhalten.