第三方控件加载不了

qq_23226579 2018-11-29 01:23:23
请问各位大神,我原来有个VB6的程序,引用了一个isbutton的第三方控件,原来程序用得挺好的,现在源程序在另外的机子上打开发现凡是引用了这个控件的窗体都出错,无发加载这个控件,但是控件的位置大小都还有一个矩形在,点上去,控件的名字也能在属性窗口看见,好像是提示你这里有个控件,但是我加载不了,不知道是什么问题,有谁遇到过吗?请大神们指点迷津啊!
...全文
1009 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
良朋 2018-12-20
  • 打赏
  • 举报
回复
是不是和平台有关? 32位的控件用在了64位平台?
舉杯邀明月 2018-11-30
  • 打赏
  • 举报
回复
如果在EXE工程中,引用另一个“控件工程”,如果是以“工程组”的形式直接编译的话,
 可能是因“控件路径”不一样,导致EXE工程中找不到相应的控件信息。
 可以尝试在EXE工程中重新引用一下控件。


不过我不太确定这个效果:
 因为我使用的用户控件都是直接包含在EXE工程中的,没有单独用过“控件工程”。
舉杯邀明月 2018-11-30
  • 打赏
  • 举报
回复
引用 7 楼 qq_23226579 的回复:
我这个程序源代码拷贝到u盘,然后在不同机器上面打开,有一台机器是没有问题的,这台是win7 32bit,系统,其他几台电脑不同程度的有问题,win1064bit系统的电脑中打开源代码可以加载ctl控件,但是appwiz.ocx控件即使注册了也添加不上,在ide中窗体显示正常,控件都在,一运行,窗体中所有控件没有了,就一个光秃秃的灰色窗体;另一台win7 32bit系统,就是出现我在上面提出的问题,反正不同电脑出现的问题不一样,很崩溃。

你说的那个“ocx即使注册了,也添加不上”,估计是VB6中没有正常加载第三方控件吧!
你要注意:64位系统中,要把这个ocx放到SysWOW64目录中去注册,不是System32目录!
你试试“以管理员身分运行”启动VB6,新建一个标准EXE工程,再把你这个控件添加到工程中。
这样应该是可以正常使用控件的。
然后,把刚才这个工程关闭了(当然不用保存它),再去打开你“需要的那个工程”试试。
笨狗先飞 2018-11-30
  • 打赏
  • 举报
回复
引用 7 楼 qq_23226579 的回复:
我这个程序源代码拷贝到u盘,然后在不同机器上面打开,有一台机器是没有问题的,这台是win7 32bit,系统,其他几台电脑不同程度的有问题,win1064bit系统的电脑中打开源代码可以加载ctl控件,但是appwiz.ocx控件即使注册了也添加不上,在ide中窗体显示正常,控件都在,一运行,窗体中所有控件没有了,就一个光秃秃的灰色窗体;另一台win7 32bit系统,就是出现我在上面提出的问题,反正不同电脑出现的问题不一样,很崩溃。

注册命令需要在管理员模式下注册
qq_23226579 2018-11-30
  • 打赏
  • 举报
回复
我这个程序源代码拷贝到u盘,然后在不同机器上面打开,有一台机器是没有问题的,这台是win7 32bit,系统,其他几台电脑不同程度的有问题,win1064bit系统的电脑中打开源代码可以加载ctl控件,但是appwiz.ocx控件即使注册了也添加不上,在ide中窗体显示正常,控件都在,一运行,窗体中所有控件没有了,就一个光秃秃的灰色窗体;另一台win7 32bit系统,就是出现我在上面提出的问题,反正不同电脑出现的问题不一样,很崩溃。
脆皮大雪糕 2018-11-30
  • 打赏
  • 举报
回复
哦,之前你是用工程组,一个exe工程引用一个ocx工程么?
如果是这个情况,你描述的现象有几种可能
1、你只打开了exe工程,但系统中没有OCX的注册,解决的办法要么开工程组,要么把OCX项目编译出来注册。
2、你只开了exe项目,系统里面也注册了OCX,但有可能因为OCX工程没有设置兼容之前版本的OCX文件,导致新编译的东西产生了新的class id,导致EXE项目找不到OCX。解决的办法是开工程组,引用ocx工程,或者重新用二进制兼容的方式设置OCX再注册,然后exe工程重新引用。

OCX和DLL工程强烈建议设置和编译结果的二进制兼容,以免出现各种诡异的问题。
舉杯邀明月 2018-11-30
  • 打赏
  • 举报
回复
你说Win10的那台,IDE中“正常”?
但编译后运行,控件没显示?

这个事情可奇怪了……
反正我是想不明白。
qq_23226579 2018-11-30
  • 打赏
  • 举报
回复
引用 9 楼 舉杯邀明月 的回复:
[quote=引用 7 楼 qq_23226579 的回复:]
我这个程序源代码拷贝到u盘,然后在不同机器上面打开,有一台机器是没有问题的,这台是win7 32bit,系统,其他几台电脑不同程度的有问题,win1064bit系统的电脑中打开源代码可以加载ctl控件,但是appwiz.ocx控件即使注册了也添加不上,在ide中窗体显示正常,控件都在,一运行,窗体中所有控件没有了,就一个光秃秃的灰色窗体;另一台win7 32bit系统,就是出现我在上面提出的问题,反正不同电脑出现的问题不一样,很崩溃。

你说的那个“ocx即使注册了,也添加不上”,估计是VB6中没有正常加载第三方控件吧!
你要注意:64位系统中,要把这个ocx放到SysWOW64目录中去注册,不是System32目录!
你试试“以管理员身分运行”启动VB6,新建一个标准EXE工程,再把你这个控件添加到工程中。
这样应该是可以正常使用控件的。
然后,把刚才这个工程关闭了(当然不用保存它),再去打开你“需要的那个工程”试试。
[/quote]

1、在win10的机器里,我是在syswow64下面注册的ocx,而且注册成功了的,但是在vb部件菜单中想添加就不行了,提示dll错误,除此以外,很奇怪,这里ctl控件k在窗体里显示正常,在ide中可见,可以编辑,但是一运行,就一片灰,什么都木有

2、然后现在在win7大那台不能加载ctl控件的窗体里,我现在只好把原来的ctl控件一个个删掉,重新添加,很费时间,不过总算是可以正常运行了
qq_23226579 2018-11-30
  • 打赏
  • 举报
回复
引用 9 楼 舉杯邀明月 的回复:
[quote=引用 7 楼 qq_23226579 的回复:]
我这个程序源代码拷贝到u盘,然后在不同机器上面打开,有一台机器是没有问题的,这台是win7 32bit,系统,其他几台电脑不同程度的有问题,win1064bit系统的电脑中打开源代码可以加载ctl控件,但是appwiz.ocx控件即使注册了也添加不上,在ide中窗体显示正常,控件都在,一运行,窗体中所有控件没有了,就一个光秃秃的灰色窗体;另一台win7 32bit系统,就是出现我在上面提出的问题,反正不同电脑出现的问题不一样,很崩溃。

你说的那个“ocx即使注册了,也添加不上”,估计是VB6中没有正常加载第三方控件吧!
你要注意:64位系统中,要把这个ocx放到SysWOW64目录中去注册,不是System32目录!
你试试“以管理员身分运行”启动VB6,新建一个标准EXE工程,再把你这个控件添加到工程中。
这样应该是可以正常使用控件的。
然后,把刚才这个工程关闭了(当然不用保存它),再去打开你“需要的那个工程”试试。
[/quote]

引用 10 楼 舉杯邀明月 的回复:
如果在EXE工程中,引用另一个“控件工程”,如果是以“工程组”的形式直接编译的话,
 可能是因“控件路径”不一样,导致EXE工程中找不到相应的控件信息。
 可以尝试在EXE工程中重新引用一下控件。


不过我不太确定这个效果:
 因为我使用的用户控件都是直接包含在EXE工程中的,没有单独用过“控件工程”。



在6
舉杯邀明月 2018-11-29
  • 打赏
  • 举报
回复
引用 2 楼 qq_23226579 的回复:
[quote=引用 1 楼 笨狗先飞 的回复:]
新机器上控制没装,把这个控件的ocx文件复制到新机器上去,然后注册一下
regsvr32 X:\xxxx\......\xxxx.ocx


我引用的是ctl用户控件,不是ocx,如果是ocx,我知道是要注册一下的。[/quote]

你说的“ctl用户控件”,是指的工程中使用的“第三方控件源码”吧!

那么: 你是用的“第三方工程”(控件是另一个工程),还是“控件包含在EXE工程内”?

如果是“第三工程“,那么“控件工程”与“EXE工程”要形成“工程组”才行!
打开工程时,要打开那个“工程组”,不能直接打开其中的EXE工程。
注意“工程组”和“工程”的图标不一样的,
下图左边的是“工程”图标,右边的是“工程组”图标。


如果是“控件包含在EXE工程内”,那应该是不会有什么问题的。
 万一“真的有问题”,那你打开工程后,再打开“控件设计器”看看有没有提示出错信息?
  (在工程资源管理器窗口中双击相应的ctl项目)
 如果不会提示错误,就把设计器关闭了,再把控件重新画一下、改成对应的控件名吧。
脆皮大雪糕 2018-11-29
  • 打赏
  • 举报
回复
第三方控件,必然要注册的咯
笨狗先飞 2018-11-29
  • 打赏
  • 举报
回复
也会生成ocx的
qq_23226579 2018-11-29
  • 打赏
  • 举报
回复
引用 1 楼 笨狗先飞 的回复:
新机器上控制没装,把这个控件的ocx文件复制到新机器上去,然后注册一下
regsvr32 X:\xxxx\......\xxxx.ocx


我引用的是ctl用户控件,不是ocx,如果是ocx,我知道是要注册一下的。
笨狗先飞 2018-11-29
  • 打赏
  • 举报
回复
新机器上控制没装,把这个控件的ocx文件复制到新机器上去,然后注册一下
regsvr32 X:\xxxx\......\xxxx.ocx

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧