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\Internet Explorer\ActiveX Compatibility

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


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

 

 

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值