【发布时间】:2016-07-27 22:47:39
【问题描述】:
我正在尝试获取使用 VB6 创建的复杂 ActiveX 控件的类型库的 IDL 文件。我尝试在使用 64 位 Win10 Pro 的开发电脑上使用 OleView.exe 执行此操作。当我尝试打开 OCX 文件或从中提取的 TLB 时,OleView 的 x64 版本会崩溃。 x86 版本两次显示以下错误框:
也许,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?
【问题讨论】:
-
在registry中找不到类型库,与文件无关。您必须在机器上安装 VB6 并正确注册此 OCX。
-
@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”库。还有其他想法吗? -
好吧,不用猜了,使用 SysInternals 的进程监视器。您应该看到 oleview.exe 正在搜索注册表,但没有找到它所抱怨的类型库。
-
如果你安装了 VS6 中的
C:\Program Files (x86)\Microsoft Visual Studio\Common\Tools\OLEVIEW.EXE,你可以试试。\3部分表示 DLL 中 TYPELIB 资源的 ID。 VB6 运行时在其可执行文件中打包了两个类型库,其中 1(默认)和 3 作为资源 ID。 -
@wqw,试过了 - 来自 VS6 的 OleView 也没有帮助。
标签: vb6 activex idl typelib oleview