关于vb6:Visual Studio 6 Windows通用控件6.0(sp6)Windows 7、64位

Visual Studio 6 Windows Common Controls 6.0 (sp6) Windows 7, 64 bit

我被要求帮助某人处理旧版vb6应用程序,因此我决定按照本指南在Windows 7 x64笔记本电脑上投放Visual Studio 6。

它安装得很好,并且从我可以看到,除了Microsoft Windows Common Controls 6.0(sp6)之外,其他所有东西都在工作。 Microsoft Windows公共控件2 6.0(sp6),Microsoft Windows公共控件5.0(sp2)等都可以正常工作。但是,当我尝试添加Microsoft Windows公共控件6.0(sp6)组件时,出现错误消息:

1
'' could not be loaded

我无法添加图片,因此我将屏幕截图上传到这里,供任何希望精确查看的人使用:

http://i.imgur.com/7aym4xB.png

我尝试注册/注销/重新注册MXCOMCTL.OCX,MSCOMCT2.OCX,msdatsrc.tlb,但均未成功。我还卸载了可能导致Windows公共控件出现问题的已知安全更新。我已经删除了IE11,尽管报告指出IE11不会像IE10那样导致MSCOMCTL.OCX出现问题。

我在Windows XP SP3兼容模式下运行VB6.EXE。通过禁用视觉主题,禁用桌面合成以及在高DPI设置上禁用显示缩放。以及以管理员身份运行它。

我还尝试过打开一个使用此控件的先前项目,该项目在加载期间失败,出现与屏幕快照相同的"空白"错误,并在生成的错误日志中显示以下内容:

第35行:控件lvData的类MSComctlLib.ListView不是已加载的控件类。
第223行:控件Stat的类MSComctlLib.StatusBar不是已加载的控件类。

因此,这告诉我,这不是.vbp中的版本问题,就像一些建议一样(新的空白项目也是如此)。

我机智。显然,人们已经使VB6和Windows 7 x64都可以正常工作(与Windows通用控件一起使用),但是我没有尝试过缓解我的问题。我希望这里的某人可能遇到了这种情况,或者对发生的事情有一些想法。


在等待对此处想法的答复时,我决定尝试一些尝试。我以管理员身份运行regedit,导航到HKEY_CLASSES_ROOT TypeLib项,然后搜索" MSCOMCTL.OCX" ...我删除了引用此.ocx文件的所有项。

搜索整个注册表后,删除找到的内容,以管理员身份运行命令提示符。然后,我导航到C: Windows SysWOW64并键入以下命令:

1
2
regsvr32 MSCOMCTL.OCX
regtlib msdatsrc.tlb

再次注册这两个文件后,一切正常!我在网上搜寻了HOURS,以寻找无济于事的解决方案。碰巧的是,我在这里发布了一个问题后,我自己修复了问题:(即使Visual Studio 6已过时,希望这对其他人还是有帮助的!


在" C: Windows SysWOW64"中实现对我来说已经有效的两个指令

1
2
regsvr32 MSCOMCTL.OCX
regtlib msdatsrc.tlb

值得注意的是,DOS框应处于管理员模式。在此之前,我一直在出错:"控件tvTreeView的类MSComctlLib.TreeView不是已加载的控件类"和"控件lvListView的类MSComctlLib.ListView不是已加载的控件类"。

我还在64位Windows 7和SP6更新上使用Visual Studio 6。由于同样的问题,我被驱逐到这里。就我而言,我不需要通过注册表。


我搜索了这个问题几个小时,然后单击了数百个网站,但没有一个起作用。

我的最终解决方案:

  • 运行:cmd
  • cd c: Windows SysWOW64(找到该位置)
  • regsvr32 MSCOMCTL.OCX
  • 这解决了第一个。对于第二个:

  • 运行:cmd
  • cd c: Windows Microsoft.NET Framework v4.0.30319
  • regtlibv12 msdatsrc.tlb
  • 完成。

    这可能并不适合所有人(考虑系统版本等原因)


    我在加载VB 6项目时遇到了同样的困难。这是示例错误消息:
    "控件prgExecution的MSComctlLib.ProgressBar类不是已加载的控件类。"

    某些Microsoft Magic解决了此问题,如下所示:我在断开的项目中打开了"项目组件"窗口。我单击浏览,找到文件MsComctl.ocx。我单击然后VB 6卡住了(应用程序无响应)。一段时间后,我使用任务管理器结束了VB 6应用程序。

    然后,神奇的是,当我打开VB 6项目向我的编程朋友展示该项目是什么POS时,所有控件都按预期链接了。不知何故,某些东西已注册或修复。


    使用运行命令regedit打开注册表编辑器。

    找到HKEY_CLASSES_ROOT TypeLib项,然后搜索" MSCOMCTL.OCX",并删除所有引用此.ocx文件的项。

    在管理员模式下打开命令提示符(cmd)。输入以下代码,

    在32位计算机中

    1
    2
    3
    4
    cd c:\Windows\System32
    regsvr32 MSCOMCTL.OCX
    regtlib msdatsrc.tlb
    regsvr32 MSCOMCT2.OCX

    在64位计算机中,

    1
    2
    3
    4
    cd c:\Windows\SysWOW64
    regsvr32 MSCOMCTL.OCX
    regtlib msdatsrc.tlb
    regsvr32 MSCOMCT2.OCX

    就在今天,我(有疑问)很高兴在Windows / 64位上运行VB6代码。我确实遇到了这个问题,但是没有一个建议的解决方案对我有用。
    都无法使用"项目->引用..."菜单添加引用。

    为了使其运行,我必须手动修改VB6项目文件(* .vbp)。
    对于所有我遇到加载问题的库,我必须使用以下符号将其定义为参考:
    Object = {注册码}#Version#0;图书馆
    例:
    对象= {FAEEE763-117E-101B-8933-08002B2F4F5A}#1.1#0; DBLIST32.OCX

    我不必注册任何库(使用regsvr32),所有这些库均已正确注册。我想我的解决方案为什么起作用的原因是,如果使用" object = {[...]"符号(而不是" Reference = * G {[...]""符号),则VB Studio仅使用注册表项并植根于C: Windows SysWOW64,而另一种方法最终在C: Windows System32中查找

    顺便说一句,IE11已安装。不管这是否重要,只有Bill G才能知道。我的猜测是,无论安装了哪个IE,我的解决方案都能正常工作。您可能只需要注销并注册该线程中提到的缺少的库。

    希望对遇到类似问题的任何人有帮助。


    我的解决方案是将Windows 10盒上的MSCOMCTL.OCX替换为还安装了MS Access的Windows 7盒中的一个。 由于某些原因,存在具有相同名称的不同MSCOMCTL.OCX 2.0控件。

    我知道这听起来很疯狂,可能无法帮助其他人,但是我们已经用自述文件保存了此MSCOMCTL.OCX,并且每次都修复了新的安装错误。

    我们将取消注册Windows 10附带的当前MSCOMCTL.OCX,将其删除,然后注册我们保存的旧MSCOMCTL.OCX。


    我在使用VB6运行Windows 7-64时遇到了同样的问题。
    我尝试了上面的注销和重新注册解决方案,但没有解决问题。然后,我注意到在我的VB6组件中,我同时引用了Microsoft Windows公共控件-2 6.0(SP6)和Microsoft Windows公共控件-3 6.0(SP5)。我删除了SP5参考,现在一切正常。似乎-2 6.0 SP6取代了-3 6.0(SP5),并且当两者都存在时,有两个对同一控件的引用。
    希望这可以帮助。
    史蒂夫


    我遇到同样的问题,但运行regsvr32 MSCOMCTL.OCX时出现错误,提示错误

    已加载模块" MSCOMCTL.OCX",但对DllRegisterServer的调用失败,错误代码为0x8002801c。

    当我以管理员身份运行CMD.EXE时,它解决了我的问题。

    有时,VB6.EXE也需要以管理员身份运行才能访问某些注册表问题。

    祝好运。


    我相信这可能与Microsoft发布MScomCtlLib的更新有关,该更新被Microsoft错误地修补,导致注册表错误。

    我相信,如果您遵循以下建议:

    https://support.microsoft.com/fr-fr/kb/2597986


    =>杰伊所说的只是删除那些指向除c: windows system32以外的其他路径的注册表项,这些是导致错误的原因。我在vb6 IDE上删除了那些异常的注册表项后得到了这些错误该问题已解决。奇迹般有效。


    我有一个问题,即VB6 IDE不会在W7 64位上安装VB6时无法加载通用控件(Sp6),特别是comctrl和msmask。我尝试了使用regsrv32(高架)提出的所有解决方案,编辑了注册表,更改了vbp中的版本号,如MS等提出的那样。全部失败。这些解决方案适用于我的其他2个PCS,但不适用于此PCS。最终我删除了IE11,之后一切正常。 IE10从来没有在PC上安装过,因为我们直接从IE8转到IE11,并被迫回溯到使用IE8。

    我不得不说,上面的简单解决方案无法解决问题,即VB6 IDE将不会加载公共控件(使用Project下的Components菜单选择)-您会收到一条错误消息,提示未加载对象。因此,在任何尝试使用无法加载的通用控件的新项目或旧项目中,都会发生这种情况(我向我自己证明了这一点)。

    因此,我对有此问题的任何人的建议是,尝试使用regsrv32路由尝试手动注册解决方案,然后编辑vbp以更改版本,如果这些失败,则卸载IE11(当然也要卸载IE10)。但这可能不是100%的解决方案,因为如果现有项目文件" .vbp"包含对错误通用控件的引用,则需要手动更正此错误-这是在IDE中加载新项目,加载所需组件的地方。 ,然后使用记事本编辑新创建的vbp,然后将通用控件的版本号复制到现有的vbp文件中。


    简单的解决方案

  • 创建一个新的空白项目并保存
  • 使用NOTEPAD打开新项目的.VBP并复制MSCOMCTL行
  • 使用NOTEPAD打开项目的.VBP文件
  • 替换MSCOMCTL行并保存
  • 完成

    祝好运