关于VB6.0中控件加载的难题

这几天在做作品的过程中,我想大家都多多少少都为VB6.0中ActiveX控件的加载而感到头痛,比如有时候在打开一个工程的瞬间它给你弹出无法加载或加载错误提示框,在你想用到某个控件时,VB6.0中又找不到……这样的情况真的很让人恼火!!!

当然,我写这些东西,肯定也遇到过此类问题,只不过暂时忘记了“不将就是发现的原动力”那句话,本来在机房的XP系统下做好的工程,一放到我的Win7 64上就出现种种错误……再这样下去,作品展无法继续……今天实在忍无可忍,不能再续让那些错误们笑话我。咬着牙在网上找出了解决的办法。

所以当它提示你需要某些控件的时候,比如Systray.ocx,去网上把它下载下来,然后进行注册

注册方法还是那个老方法

① 把.ocx文件放到C:\Windows\System32\

② 运行regsvr32 C:\Windows\System32\SysTray.ocx

一般情况XP系统或Win7 32位系统就可以注册成功,但有的人又问了,注册的时候有时会注册失败,比如会弹出 "模块***\***\***.ocx ”(" ***\***\ ”表示控件存放路径)加载失败等对话框,如右图:

这时候你可以以管理员的身份再次注册一遍,开始→搜索(cmd),搜索到cmd这个程序时,右键点击以管理员身份运行,乖乖地输入上面的②步骤中的regsvr32 C:\Windows\System32\SysTray.ocx运行一下,是不是大功告成啦?

这时候如果还显示加载失败,那你就应该注意是不是你系统的问题了,如果你的系统是Win7 64,位,那就不要慌,上面的情况纯属正常情况,不知道经常逛C盘的童鞋们有没有注意到,原来在win7 64位的系统Windows目录下上比32位多了一个syswow64目录,随便查了查,WoW64 (Windows-on-Windows 64-bit)是一个Windows操作系统的子系统,能够运行32-bit 应用程序WoW64子系统是一个轻量级的compatibility layer,在所有版本的windows上都拥有同样的接口. 它的主要目的是用来创建32-bit环境,为了让32位的应用程序可以不经过任何修改就运行在64-bit的系统上,它提供了必须的接口。.
技术上说,WOW64是由三个DLL实现的.:Wow64.dll 是Windows NT kernel的核心接口,在32位和64位调用之间进行转换,包括指针和调用栈的操控.;Wow64win.dll 为32位应用程序提供合适的入口指针.;Wow64cpu.dll 负责将处理器在32位和64位的模式之间转换。

关于syswow64暂时叙述到这里,在上面大概了解了syswow64,知道该怎么办了吧?对,就是把你需要注册的SysTray.ocx控件放到这个文件夹里再进行注册注册方法跟上面的方法一样,当然注册的路径要改为C:\Windows\syswow64\SysTray.ocx,点击回车的时候是不是像下面那样显示注册成功啦?高兴吧……

这里再说一下,如果遇到“访问系统注册错误”的问题,多半是权限问题,比如加载一个工程时提示访问系统注册错误,你可以先以管理员身份打开VB,然后再从VB中加载那个工程。

在这里小反思一下,以后遇到问题千万不要“不把小问题当问题”了,坚持遵守“不将就是发现的原动力”的原则。遇到问题不急不躁,网络上的高手多得是,只要耐心、认真地学习,虚心向他人请教,没有解决不了的问题。

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...