我有一个VB项目能够正常工作,但现在当我打开项目时,我收到mscomctl.ocx的错误。 我已经重新注册了ocx,但仍然无法加载项目。
如何解决此问题?
答案 0 :(得分:3)
当我在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
答案 1 :(得分:1)
我遇到了同样的问题。 user1272267回答工作(谢谢),但让我感到困扰的是我不明白为什么,我也不确定我是否最终会为那些工作正常的同事打破这个项目。
所以我做了一些挖掘,发现在注册表中有一个密钥; reg hkcr \ typelib {831FDD16-0C5C-11D2-A9FC-0000F8754DA1} \ 2.0(注意2.0)
我将2.0更改为2.1并且嘿presto,一切正常。我还检查了DLL,结果发现我的副本比我的同事复制的要早。我想这可能是因为当我安装Service Pack 6时,我保留了一些原始文件,因为替换文件是针对美国英语而且我有英国版本,但我不是100%肯定这个
答案 2 :(得分:0)
尝试重新注册MSCOMCTL.OCX
:
c:\windows\system32\
打开命令提示符并运行:
cd c:\windows\system32
regsvr32 MSCOMCTL.OCX
尝试再次运行您的应用程序。
答案 3 :(得分:0)
在我看来你的项目已经失去了对ocx的引用(虽然它仍然试图使用一些控件)
点击ide
中“项目”菜单中的“组件” 列表中的确保“microsoft windows common controls 6.0(sp6)”被检查......如果已经检查过,请尝试删除它,关闭(并保存)项目,打开项目,然后重新打开< / p>
答案 4 :(得分:0)
您还可以在记事本中打开项目文件(.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(start - execute - regedit)并搜索此密钥..请小心,不过你做了什么在注册表中,您可能会搞砸视觉基本安装甚至完整的窗口:)
当然你也可以删除visual basic并重新安装以获得注册
答案 5 :(得分:0)
我有同样的错误。这两件事对我有用:
或
答案 6 :(得分:0)
Windows 7 64位;刚刚安装了VS6和VS6 SP6(有困难)但我的Win XP项目给了#34; MSCOMCTL.OCX无法加载&#34;错误。
我发现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,现在项目仍然正常打开,所有运行正常。
答案 7 :(得分:0)
当我的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和注册表必须匹配。