微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MSCOMCTL.OCX 中的LISTVIEW控件各类异常终极解决方案


一个VB工程或者VBA工程中(以下简称VB应用)用到MSCOMCTL.OCX 中的LISTVIEW控件,经常遇到一些莫名其妙的问题,比如:

  1. 在机器A上运行正常,一段时间后,在A上无法运行了,即便你再重新注册你的MSCOMCTL.OCX文件,任然无法正常工作
  2. 在机器A上运行正常,到机器B无法运行
  3. 在机器A上运行正常,在机器B上编辑过VB应用后,在A上无法运行了

正好这几天就碰到一个问题,我在XP下开发的VBA工程在WINDOWS 7下save过一次后,在XP下就不可用了。好在前段时间研究了一下COM,这次发挥了作用。仔细研究了一下注册表,感觉发现了根本解决思路,万变不离其宗,希望对大家能有所帮助。

首先要保证MSCOMCTL.OCX成功注册,查看HKEY_CLASSES_ROOT\CLSID下是否有键{BDD1F04B-858B-11D1-B16A-00C0F0283628}。如果在成功注册的情况下,还是无法正常运行,一般是两种情况,

A.你的VB应用中的控件版本号对应的控件没有注册,比如如果在你的工程中有如下字样,Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0; MSCOMCTL.OCX;表示使用的版本号为2.1,去HKEY_CLASSES_ROOT\TYPELIB下查看={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}键下是否有相应版本,如果没有的话,需要升级到相应版本控件

B.VB应用中记录的控件类型库版本号对应的控件已经注册,但就是无法运行。比如上述问题1,之所以无法运行,是因为你的MSCOMCTL.OCX被升级了,由于MSCOMCTL.OCX有一个安全漏洞,微软升级以后,把你所用的老版本(通常是2.0)给禁用了,如果你还想使用2.0版本怎么办?找到你的老版本的MSCOCTL.OCX文件,拷贝到SYstem32\目录下,使用regsvr32注册后,去HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InternetExplorer\ActiveXCompatibility

{BDD1F04B-858B-11D1-B16A-00C0F0283628}下,修改子键Compatibility Flags的键值为0即可,值1024表示老版本禁用了。


以上提到的注册表位置仅适用于32位操作系统,64位系统有所区别。

原文地址:https://www.jb51.cc/vb/259358.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐