2016-04-07 12 views
0

J'essaie d'obtenir le fichier IDL pour la bibliothèque de types d'un contrôle ActiveX complexe créé avec VB6. J'ai essayé de faire ceci avec OleView.exe sur mon PC de développement avec 64 bits Win10 Pro. La version x64 de OleView se bloque simplement lorsque j'essaie d'ouvrir le fichier OCX ou le TLB qui en est extrait. La version x86 me montre la zone d'erreur suivant deux fois:OleView.exe ne peut pas décompiler la bibliothèque de types extraite de VB6 OCX

OleView.exe: Error loading type library (TYPE_E_CANTLOADLIBRARY)

Peut-être, le fichier TLB a plusieurs importlib directives et OleView ne peut pas trouver les fichiers référencés. Je pouvais voir le fichier OCA pour le composant dans OleView, et son équivalent IDL contient ces lignes en haut:

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

Comment résoudre ce problème avec OleView? Ou existe-t-il un autre outil pour convertir TLB en IDL?

+0

Il ne peut pas trouver les bibliothèques de type dans le * registre *, rien à voir avec les fichiers. Vous devez avoir VB6 installé sur la machine et avoir cet OCX correctement enregistré. –

+0

@HansPassant, VB6 a été installé à partir du CD VS98 d'origine. VB6.OLB est enregistré: sa clé de registre 'HKEY_CLASSES_ROOT \ TypeLib \ {FCFB3D2E-A0FA-1068-A738-08002B3371B5} \ 6.0 \ 9 \ win32' pointe vers l'emplacement de fichier approprié. Le seul problème peut être cette bibliothèque "3" qui pointe vers 'C: \ Windows \ SysWOW64 \ msvbvm60.dll \ 3'. D'autres pensées? – TecMan

+0

Eh bien, pas de supposition, utilisez le moniteur de processus de SysInternals. Vous devriez voir oleview.exe recherchant le registre et ne trouvant pas la bibliothèque de type dont il se plaint. –

Répondre

0

Je pourrais convertir la bibliothèque de type étendue pour mon composant stocké dans le fichier OCA dans le fichier IDL correspondant en utilisant le OleWoo tool. Cependant, l'IDL que j'ai obtenu n'est pas correct dans de nombreux endroits. Il ne contient pas de point-virgule, etc. Mais au moins, il peut être utilisé pour obtenir une image générale des interfaces COM implémentées dans un composant.