UP有分!如何注册程序中所使用的控件?
编程时使用了mscomm、 ms flexgrid和ms form lable三个控件,都是从系统已注册控件中找到的。在使用SetupFactory6。0制作安装程序时,已经用regsrv32注册了这三个控件所对应的ocx或者dll文件。但是不知道为什么在2000中就是无法运行安装后的程序。必须安装office2000和vc6后,程序才能运行。而且把office和vc反安装后,程序也能运行!谁能告诉我,究竟为什么!!! 问题点数:100、回复次数:30Top
1 楼asign(局外人@http://blog.csdn.net/asign)回复于 2003-09-02 21:49:34 得分 1
可能是某个dll的问题。建议查查。Top
2 楼maohbao()回复于 2003-09-02 22:28:16 得分 1
我不知道!Top
3 楼acf(叶开)回复于 2003-09-05 10:14:42 得分 0
各位大侠帮帮忙撒!
很急的啦!Top
4 楼newly_ignorant(不学无术)回复于 2003-09-05 10:31:26 得分 5
问题出在你是动态创建的控件。ActiveX控件的License有两种:设计时和运行时。如果你在对话框上放置控件,编译时运行时License会自动加到EXE中,所以你分发的时候即使用户机器上没有安装VC也可以运行。而你动态建立控件时没有运行时License,控件无法建立。如果机器上安装了VC,虽然没有运行时License,但控件可以在注册表中找到有关信息,所以也可以工作。
微软的解决方法就是;
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q151/8/04.asp&NoWebContent=1Top
5 楼warmchang(风滑过的痕迹)回复于 2003-09-05 11:17:56 得分 5
不错,就是这篇文章:
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q151/8/04.asp&NoWebContent=1&NoWebContent=1
你其实可以在程序界面中放置一个你用到的控件(虽然你并不会真正的用到它),这样就可以避免你所说的问题了,^_^
顺便帮你顶。
Top
6 楼chen_pin(小品)回复于 2003-09-07 10:14:44 得分 1
关注Top
7 楼acf(叶开)回复于 2003-09-07 18:28:30 得分 0
我的程序中应该不是动态创建的控件。我所使用的控件都是从工具栏上拖动到对话框上。
另外,在一个干净的2000系统中,如果手动注册了那三个文件后,再安装Vc(不安装ActiveX),然后用VC打开工程文件时,可以发现Form Lable和MSCOMM控件都不能初始化,不能在对话框上正确显示,而FlexGrid却可以。这又是为什么呢?
而且,用depend工具查看我的程序,也没有显示需要那三个文件啊。
究竟是为什么?到底如何解决呢?请大家帮我顶啊!Top
8 楼feeboby(rockの终点)回复于 2003-09-08 10:08:04 得分 1
upTop
9 楼luoxiangdong(敏捷软件开发团队)回复于 2003-09-08 10:17:15 得分 1
你进了微软的Dll地狱了!!呵呵Top
10 楼acf(叶开)回复于 2003-09-08 10:30:09 得分 0
Dll地狱?难度是因为DLL版本的原因?应该不是吧Top
11 楼ayanamiwww(咩~咩『抵制日货』)回复于 2003-09-08 10:36:14 得分 1
接分!^_^Top
12 楼warmchang(风滑过的痕迹)回复于 2003-09-08 10:48:35 得分 2
mscomm、 ms flexgrid和ms form lable三个控件需要其他的支持库,用depend看看吧!Top
13 楼simouse()回复于 2003-09-08 10:55:39 得分 1
upTop
14 楼acf(叶开)回复于 2003-09-08 10:57:43 得分 0
你是说要用Depend查看那三个文件吗?我试试Top
15 楼hitwd2000(东邪王七)回复于 2003-09-08 11:06:29 得分 1
upTop
16 楼jianxin_js(兔)回复于 2003-09-08 11:16:34 得分 1
学习Top
17 楼bbgbianbaogui()回复于 2003-09-08 11:17:54 得分 1
up
Top
18 楼xiaofei7569(夏雁)回复于 2003-09-08 11:44:20 得分 1
学习中。Top
19 楼zjunlucky(幸运小子)回复于 2003-09-08 11:56:41 得分 4
我在vb中碰到过类似的问题:
1、有可能是你做安装包的时候,文件组里的自注册文件没有设置好,每个自注册ocx或dll文件在他的属性里都有标明:selfregister,不能出错的!
2、也有可能是缺少相关的dll文件,比如msvcp60.dll,msvcrt.dll等。Top
20 楼gjgj3368(冷面修罗)回复于 2003-09-08 12:07:51 得分 1
学习Top
21 楼fanfyj(鸬鹚.NET)回复于 2003-09-08 12:26:07 得分 1
upTop
22 楼PaPaCong(小勇)回复于 2003-09-08 12:28:25 得分 1
regsvr32 xxx.dllTop
23 楼zhengoodman(伤心小箭--甩一个人需要理由吗?)回复于 2003-09-08 12:40:12 得分 1
upTop
24 楼xiaohedou(小河豆(充电中.18%.))回复于 2003-09-08 13:00:11 得分 1
look & studyTop
25 楼yushulei(永远)回复于 2003-09-08 13:07:55 得分 1
gzTop
26 楼cx0928(阳光)回复于 2003-09-08 13:23:44 得分 2
可能是作安装包时缺少了某个控件的selfregistryTop
27 楼Purpleendurer(编程—>任是无情也动人^_^)回复于 2003-09-08 14:14:42 得分 1
UPTop
28 楼maggice()回复于 2003-09-08 22:04:34 得分 60
你是不是只注册了fm20.dll,这个只是英文版的,如果需要中文支持还要再注册fm20chs.dllTop
29 楼matq2008(叶子.net)回复于 2003-09-08 22:22:45 得分 4
mscomm32等均有license号,你不仅要注册,还要在注册表中写入一些东东:Top
30 楼acf(叶开)回复于 2003-09-08 22:23:18 得分 0
问题已解决,的确是maggice所说的那样
同时也谢谢所有帮忙解决和up的兄弟,呵呵
结贴,给分Top
31 楼matq2008(叶子.net)回复于 2003-09-08 22:24:06 得分 0
1) 如果操作系统是windows2000将MSCOMM32.ocx文件拷入c:\winnt\system32\
(2) 如果操作系统是windows2000 在运行中输入 regsvr32 c:\winNT\system32\Mscomm32.ocx
(3)regedit
(4)找HKEY_CLASSES_ROOT\Licenses,在其中添加主键
4250E830-6AC2-11cf-8ADB-00AA00C00905
其内容为:kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun
//当然你也可以用代码来实现上面的步骤了
:-)
Top




