我有一个 VB 项目能够正常工作,但现在当我打开项目时,我收到 mscomctl.ocx 的错误。我已经重新注册了 ocx,但仍然无法加载项目。
我该如何解决这个问题?
当我在 Windows 7 64 位环境中打开项目时遇到了这个问题,它在 win XP 机器上正常工作。我之前在项目文件中做了一个非常简单的更改,它说
Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0; MSCOMCTL.OCX
我改成2.1
是2.0
因为我在许多论坛上都看到过它,而且它很有魅力。VBP
文件中更新的参考是
Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; MSCOMCTL.OCX
在我看来,您的项目已经失去了对 ocx 的引用(虽然它仍然尝试使用一些控件)
在 ide 的“项目”菜单中单击“组件”
在列表中确保选中“microsoft windows common controls 6.0 (sp6)”...如果已经选中,请尝试删除它,关闭(并保存)项目,打开项目,然后再次打开它
当我的 Windows 7 32 位笔记本电脑崩溃并且公司用 64 位机器替换它时,我遇到了类似的问题......首先我尝试使用 regsvr32 注册 .ocx - 在 32 位机器上它会不时被卸载。 ..这在翻新的64位机器上根本不起作用...
我尝试更改 .vbp 文件设置,如之前的一些响应中所述,但没有成功...我将 .vbp 设置回 2.0,后来在另一个问题上,我正在搜索注册表并决定搜索 mscomctl.ocx 并找到 3键 - 2.0、2.1 和 2.2...因为它不起作用,我决定删除 2.1 和 2.2 键,瞧!控件加载没有问题。显然 .vbp 和注册表必须匹配。
我有同样的问题。user1272267 回答有效(谢谢),但令我困扰的是我不明白为什么,我也不确定我是否最终会为我的同事打破这个项目,因为它工作得很好。
所以我做了更多的挖掘,发现在注册表中有一个键;reg hkcr\typelib{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}\2.0(注意2.0)
我将 2.0 更改为 2.1,嘿,一切正常。我还检查了 DLL,结果发现我的副本比我同事的副本旧。我认为这可能是因为当我安装 Service Pack 6 时,我保留了一些原始文件,因为替换文件是针对美式英语的,而我有英国版,但我不能 100% 确定这一点
我有同样的错误。这两件事对我有用:
或者
希望能帮助到你。
您还可以在记事本中打开项目文件(.vbp 文件),您会看到如下内容:
Type=Exe
Form=frmComFX.frm
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\Windows\SysWOW64\stdole2.tlb#OLE Automation
Object={648A5603-2C6E-101B-82B6-000000000014}#1.1#0; MSCOMM32.OCX
Object={5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0; MSFLXGRD.OCX
Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; MSCOMCTL.OCX
Form=frmSetup.frm
Module=modFX; modFX.bas
IconForm="frmComFX"
Startup="frmComFX"
HelpFile=""
Title="ComFX"
Command32=""
Name="comFX"
以 'object-' 开头的行包含注册 ocx 的注册表项...您现在可以打开 regedit(开始 - 执行 - regedit)并搜索此键.. 请注意您在 regedit 中所做的事情,你可能会搞砸你的 Visual Basic 安装,甚至你的整个 Windows :)
当然,您也可以删除 Visual Basic 并重新安装它以恢复注册
尝试重新注册MSCOMCTL.OCX
:
c:\windows\system32\
打开命令提示符并运行:
cd c:\windows\system32
regsvr32 MSCOMCTL.OCX
比尝试再次运行您的应用程序。
视窗 7 64 位;刚刚安装了 VS6 和 VS6 SP6(有困难)但是我的 Win XP 项目给出了“无法加载 MSCOMCTL.OCX”错误。
我发现 Nathan Hadley 的回答给了我线索并允许我打开项目......我的项目的 userinterface.vbp 文件(从 Win XP 复制)在 MSCOMCTL.OCX 参考旁边有 #2.2,但我的注册表类 id 有只有2.1。所以我将我的 userinterface.vbp 条目更改为 2.1,项目打开正常。
但是第二天我再次运行了 VB6 SP6 累积更新 VB60SP6-KB2708437-x86-ENU(可能第一次没有正确安装),现在我在注册表中有 2.2 版。所以我改回了我的 userInterface.vbp 文件,所以 OCX 引用再次具有#2.2,现在项目仍然正确打开并且一切运行正常。