注册 登录
编程论坛 VB6论坛

如何在VB6中用新版OCX替换旧版OCX

itpingtai 发布于 2023-10-17 08:13, 1453 次点击
旧版的OCX功能少,新版的OCX功能上有修改,现在的问题,如何将新的OCX替换程序里旧的OCX?

打开各个窗体,删除全部旧版OCX调出的控件,再打开部件,删除旧版COX;然后加新版的OCX,最后还要一个一个找到每个窗口,将控件加上,问题上是可以,但这种方法窗口一多会累死人。有没有简单可行的方法呀。

直接将部件OCX删件,会报错;

在文件夹中,将新版OCX复制替换旧版,再打开工程,又报错,怎么处理呀……
8 回复
#2
yiyanxiyin2023-10-17 09:33
旧控件先取消注册, 然后重新注册新控件,  程序中再删除旧控件,添加新控件
#3
apull2023-10-17 10:48
卸载  regsvr32 /u  xxx.ocx
注册  regsvr32  new.ocx

#4
itpingtai2023-10-17 11:54
回复 2楼 yiyanxiyin
很多子窗体调用了旧控件,删了再增加,很头大的呀
#5
itpingtai2023-10-17 11:59
回复 3楼 apull
先将新的OCX复制过来,替换了旧的OCX,OCX文件名一样。
regsvr32 /u  E:\软件\abcd.ocx        (旧OCX)
regsvr32  E:\软件\abcd.ocx          (新OCX)
再打开工程文件,一样弹出报错,怎么回事呀
#6
apull2023-10-17 18:09
部件引用后vbp项目文件里也有这个注册号,比如Object={F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0; comdlg32.ocx
记事本打开frm文件,替换对应ocx项{]里的注册号
这样可以批量替换

#7
itpingtai2023-10-17 19:06
回复 6楼 apull
比如Object={F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0; comdlg32.ocx

这种编号,新的OCX是在哪里找?

几十个窗口都调用了原来的OCX,这样一来,新OCX替换旧OCX,重新注册后,难道要分别用记事本打开这些Frm文件进行人工字符替换?

不会这么累吧?

这样写OCX,不会太累了点吧
#8
风吹过b2023-10-18 08:17
比如Object={F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0; comdlg32.ocx
这种编号,新的OCX是在哪里找?
新建一个工程,放新 OCX 后保存,在 frm 文件里找,这不就有了吗?


几十个窗口都调用了原来的OCX,这样一来,新OCX替换旧OCX,重新注册后,难道要分别用记事本打开这些Frm文件进行人工字符替换?
不会这么累吧?
这样写OCX,不会太累了点吧
有文本搜索替换工具,网上找一下,找不到再这样手动换。



#9
itpingtai2023-10-18 10:10
感谢各位的指点,目前问题已经解决。

为了让新人以后少走弯路,现在将解决的详细步骤写出来:

===================================================================

新控件替换旧控件的操作



1、复制“新.OCX”和“新.OCA”(两个文件)替换“旧.OCX”和“旧.OCA”(两个文件);

2、打开CMD,运行删除旧控件的注册信息,再执行注册新控件的注册信息;

   regsvr32 /u  旧.OCX

   regsvr32  新.OCX

3、打开工程VBP文件;

   出现报错提示:(是、否、帮助);选择“否”后再点“确定”;

4、选“工程”-“部件”,点“浏览”打开“新.OCX”,“确定”后点“保存”工程文件;然后退出工程文件。

5、重新打开工程文件

   “新.OCX”就替换“旧.OCX”成功了!

====================================================================
1