我有一个VB项目能够工作没有任何问题,但现在当我打开该项目我得到的错误与mscomctl.ocx。我已经重新注册了ocx,但仍然无法加载项目。如何解决这个问题?
vybvopom1#
当我在Windows 7 64位环境中打开项目时,我遇到了这个问题,它在Win XP机器上正常工作。我做了一个非常简单的更改项目文件早些时候它说
Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0; MSCOMCTL.OCX
我把2.1改成了2.0,因为我在很多论坛上都看到过这样的东西,而且效果很好。VBP文件中更新的参考是
2.1
2.0
VBP
Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; MSCOMCTL.OCX
tzcvj98z2#
在我看来,你的项目已经失去了对ocx的引用(尽管它仍然试图使用一些控件)在ide的“项目”菜单中点击“组件”在这列表中确定'微软 windows 公用控制6.0(sp6)'被检查...如果它已经是,尝试删除它,关闭(并保存)项目,打开项目,然后再次打开它
mbzjlibv3#
我也有同样的问题。user 1272267的答案工作(谢谢),但它困扰着我,我不明白为什么,我也不确定我是否会最终打破了我的同事谁它工作的罚款项目。所以我做了更多的挖掘,发现在注册表中有一个关键; reg hkcr\typelib{831 FDD 16 - 0 C5 C-11 D2-A9 FC-0000 F8754 DA 1}\2.0(注意2.0)我把2.0改成了2.1,嘿,一切都很好。我还检查了DLL,结果发现我的副本比我同事的副本旧。我想这可能是因为当我安装服务包6我保留了一些原始文件时,问,因为更换文件是为美国英语和我有英国版本,但我不是100%肯定这一点
5ssjco0h4#
当我的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和注册表必须匹配。
vktxenjb5#
我也犯了同样的错误。这两件事对我很有效:
或
希望对你有帮助。
nfeuvbwi6#
尝试重新注册MSCOMCTL.OCX:1.下载文件:http://www.ocxdump.com/ocxfiles/M/MSCOMCTL.OCX1.复制到位置c:\windows\system32\1.打开命令提示符并运行以下命令:
MSCOMCTL.OCX
c:\windows\system32\
cd c:\windows\system32 regsvr32 MSCOMCTL.OCX
请尝试再次运行应用程序。
zysjyyx47#
Windows 7 64位;刚刚安装了VS 6和VS 6 SP 6(有困难),但我的项目从Win XP给出了“MSCOMCTL.OCX无法加载”错误。我发现内森·哈德利的回答给了我线索,让我打开了这个项目。我的项目的userinterface.vbp文件(从WinXP复制)在MSCOMCTL.OCX引用旁边有#2.2,但我的注册表类ID只有2.1。所以我把我的userinterface.vbp条目改成了2.1,项目打开了。然而,第二天我再次运行VB 6 SP 6累积更新VB 60 SP 6-KB 2708437-x86-ENU(可能第一次没有正确安装),现在我在注册表中有2. 2版本。所以我把userInterface.vbp文件改回来了,所以OCX参考文件又有了#2.2,现在项目仍然可以正确打开,所有的运行都正常。
nmpmafwu8#
你也可以在记事本中打开项目文件(.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中所做的事情,你可能会搞砸你的visual basic安装,甚至你的整个windows:)当然,你也可以删除visual basic并重新安装它以恢复注册
8条答案
按热度按时间vybvopom1#
当我在Windows 7 64位环境中打开项目时,我遇到了这个问题,它在Win XP机器上正常工作。我做了一个非常简单的更改项目文件早些时候它说
我把
2.1
改成了2.0
,因为我在很多论坛上都看到过这样的东西,而且效果很好。VBP
文件中更新的参考是tzcvj98z2#
在我看来,你的项目已经失去了对ocx的引用(尽管它仍然试图使用一些控件)
在ide的“项目”菜单中点击“组件”
在这列表中确定'微软 windows 公用控制6.0(sp6)'被检查...如果它已经是,尝试删除它,关闭(并保存)项目,打开项目,然后再次打开它
mbzjlibv3#
我也有同样的问题。user 1272267的答案工作(谢谢),但它困扰着我,我不明白为什么,我也不确定我是否会最终打破了我的同事谁它工作的罚款项目。
所以我做了更多的挖掘,发现在注册表中有一个关键; reg hkcr\typelib{831 FDD 16 - 0 C5 C-11 D2-A9 FC-0000 F8754 DA 1}\2.0(注意2.0)
我把2.0改成了2.1,嘿,一切都很好。我还检查了DLL,结果发现我的副本比我同事的副本旧。我想这可能是因为当我安装服务包6我保留了一些原始文件时,问,因为更换文件是为美国英语和我有英国版本,但我不是100%肯定这一点
5ssjco0h4#
当我的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和注册表必须匹配。
vktxenjb5#
我也犯了同样的错误。这两件事对我很有效:
或
希望对你有帮助。
nfeuvbwi6#
尝试重新注册
MSCOMCTL.OCX
:1.下载文件:http://www.ocxdump.com/ocxfiles/M/MSCOMCTL.OCX
1.复制到位置
c:\windows\system32\
1.打开命令提示符并运行以下命令:
请尝试再次运行应用程序。
zysjyyx47#
Windows 7 64位;刚刚安装了VS 6和VS 6 SP 6(有困难),但我的项目从Win XP给出了“MSCOMCTL.OCX无法加载”错误。
我发现内森·哈德利的回答给了我线索,让我打开了这个项目。我的项目的userinterface.vbp文件(从WinXP复制)在MSCOMCTL.OCX引用旁边有#2.2,但我的注册表类ID只有2.1。所以我把我的userinterface.vbp条目改成了2.1,项目打开了。
然而,第二天我再次运行VB 6 SP 6累积更新VB 60 SP 6-KB 2708437-x86-ENU(可能第一次没有正确安装),现在我在注册表中有2. 2版本。所以我把userInterface.vbp文件改回来了,所以OCX参考文件又有了#2.2,现在项目仍然可以正确打开,所有的运行都正常。
nmpmafwu8#
你也可以在记事本中打开项目文件(.vbp文件),在那里你会看到如下内容:
以'object-'开头的行包含ocx注册的注册表项...你现在可以打开注册表编辑器(启动-执行-注册表编辑器)并搜索这个键。小心你在regedit中所做的事情,你可能会搞砸你的visual basic安装,甚至你的整个windows:)
当然,你也可以删除visual basic并重新安装它以恢复注册