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

前端之家收集整理的这篇文章主要介绍了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.f2er.com/vb/259358.html

猜你在找的VB相关文章