ActiveForm调试问题 注册了吗 regsvr32 *.ocx 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Project->Web Deployment Options...中选择OCX路径。 Project->Web Deployment Options中的项目都设置了,还是不行 这种问题90%是路径有问题。可以分两大类:一、发布时问题:根据发布时的选项不同,发布的文件也不一样,如果发布时选择使用CAB文件,包含版本信息,则会有三个东东,ActiveFormProj1.cab,ctiveFormProj1.HTML,ActiveFormProj1.INF其中ActiveFormProj1.cab中有OCX,ctiveFormProj1.HTML为测试页,ActiveFormProj1.INF安装文件,在测试页中,有一段代码codebase="./ActiveFormProj1.cab#version=1,0,2,0"指明当前要安装的ActiveFormProj1.cab位置,这里是‘.’,表示ActiveFormProj1.cab与其他两个文件在同级目录下。可以在Project->Web Deployment Option的Target URL中设置。如果你在其他目录里的页面使用了该OCX,则务必保证codebase中的路径的正确性。如果路径不正确,则第一次使用OCX时,因为OC CACHE中没有该OCX文件,所以IE会去根据codebase寻找安装文件,如果路径不对,自然安装不成功。如果OC CACHE中已存在该OCX文件,并且版本号没有更新,则IE不会重新下在安装该OCX文件。IE会使用OC CACHE中的已注册过的该OCX文件。(OC CACHE指C:\WINDOWS\Downloaded Program Files等目录)二、运行时问题:根据我的体会,先讲一下OCX的装载过程。因为OCX是一种DLL,同时有是进程内服务器。所以需要宿主程序加载,通常IE作为宿主程序。以IE为例(第一次安装时例外),当使用IE打开页面里有OBJECT标记的页面时,IE遇到这样的标记,会根据CLSID到本地注册表里寻找该OCX的信息,注册表中的信息包含说明该OCX是进程内服务器,加载路径等信息,通常情况下,加载路径为OC CACHE(但也有列外,比如使用DELPHI的RUN-》REGISTER ACTIVEX,你看一下该路径变成了当前OCX编译输出的路径)。这样的话,IE加载OCX文件就会有两种可能的加载路径,这是引起很多问题的原因所在。比如,你发布ACTIVEX后,忘记更新codebase中的版本信息,那么IE不会更新OC CACHE中的OCX,IE仍会使用老的OCX,此时你就会奇怪,我新加的特性怎么没有在页面中表现出来,这时,解决办法有两个,其一,更新codebase中的版本信息与发布版本信息一致(注意是一致,而不是高与当前版本,因为我发现当版本增加到一定程度后,如100,又会开始减少,即下次发布版本不是101,反而是99)。其二,干脆删掉OC CACHE中的OCX,有时系统会提示无法删除当前OCX,需要重起机器的信息,此时你可以尝试关掉所有的IE,在去删除OCX,如果还不行,可以结束当前EXPLORER(因为EXPLORER与IEXPLORER是捆绑在一起的),然后肯定可以删掉该OCX,当前重起后,在不打开引用该OCX页面的情况下页可以删除该OCX。然后,重新利用IE安装OCX即可。IE在第一次安装OCX时,做了如下几件事(前提是发布选项如我上述)1、根据CODEBASE找到安装文件。如果找不到,则会出现你上述的问题。2、下在INF到本地缓存中。3、根据INF文件找到CAB文件。4、下载CAB文件到本地缓存中。5、解压出OCX文件到OC CACHE中。6、更新注册表中的相关信息。7、页面中载入该OCX并初始化。8、执行页面的ONLOAD脚本函数。(一般可以在该函数中对控件的外观等属性做一些设置)。以上任何一步出问题,OCX都不会成功装载。其中6有时会出问题。即,以前安装过该OCX控件,并使用DELPHI的REGISTER ACTIVEX注册过,那么IE在注册时有时会又问题,具体我还不是太确定。以上是我做ACITVEX控件时的一点心得,写出来供大家参考,由于本人水平有限,错误在所难免,欢迎大家指正,同时也欢迎大家就ACTIVEX的开发进行讨论。 adoquery执行sp_fkeys存储过程后怎么取得返回值? 在特定的组件中屏蔽键盘按键 谁有TjzDayViewGrid这个控件包 如何将“11/08/2005-RC410-SB450-PTRC-GC-00”字符串当遇到“/”“-”时,把它分开存到其它字符串变量中??? 使用TBatchMove控件批量复制数据 怎样执行了一个方法后,令程序先等待一段时间,再执行下一个方法 过滤器不能打开是怎么回事?谢谢 求ftp源代码 TSection 问题 TOlecontainer的GetIconMetaPict方法如何使用? 请问如何在一个可执行文件运行时修改自身 关于【阶乘】的精确算法!请进
可以分两大类:
一、发布时问题:
根据发布时的选项不同,发布的文件也不一样,如果发布时选择使用CAB文件,包含版本信息,则会有三个东东,ActiveFormProj1.cab,ctiveFormProj1.HTML,ActiveFormProj1.INF
其中ActiveFormProj1.cab中有OCX,ctiveFormProj1.HTML为测试页,ActiveFormProj1.INF
安装文件,在测试页中,有一段代码codebase="./ActiveFormProj1.cab#version=1,0,2,0"
指明当前要安装的ActiveFormProj1.cab位置,这里是‘.’,表示ActiveFormProj1.cab与其他两个文件在同级目录下。可以在Project->Web Deployment Option的Target URL中设置。如果你在其他目录里的页面使用了该OCX,则务必保证codebase中的路径的正确性。如果路径不正确,则第一次使用OCX时,因为OC CACHE中没有该OCX文件,所以IE会去根据codebase寻找安装文件,如果路径不对,自然安装不成功。如果OC CACHE中已存在该OCX文件,并且版本号没有更新,则IE不会重新下在安装该OCX文件。IE会使用OC CACHE中的已注册过的该OCX文件。(OC CACHE指C:\WINDOWS\Downloaded Program Files等目录)
二、运行时问题:
根据我的体会,先讲一下OCX的装载过程。因为OCX是一种DLL,同时有是进程内服务器。所以需要宿主程序加载,通常IE作为宿主程序。以IE为例(第一次安装时例外),当使用IE打开页面里有OBJECT标记的页面时,IE遇到这样的标记,会根据CLSID到本地注册表里寻找该OCX的信息,注册表中的信息包含说明该OCX是进程内服务器,加载路径等信息,通常情况下,加载路径为OC CACHE(但也有列外,比如使用DELPHI的RUN-》REGISTER ACTIVEX,你看一下该路径变成了当前OCX编译输出的路径)。这样的话,IE加载OCX文件就会有两种可能的
加载路径,这是引起很多问题的原因所在。比如,你发布ACTIVEX后,忘记更新codebase中
的版本信息,那么IE不会更新OC CACHE中的OCX,IE仍会使用老的OCX,此时你就会奇怪,我新加的特性怎么没有在页面中表现出来,这时,解决办法有两个,其一,更新codebase中的版本信息与发布版本信息一致(注意是一致,而不是高与当前版本,因为我发现当版本增加到一定程度后,如100,又会开始减少,即下次发布版本不是101,反而是99)。其二,干脆删掉OC CACHE中的OCX,有时系统会提示无法删除当前OCX,需要重起机器的信息,此时你可以尝试关掉所有的IE,在去删除OCX,如果还不行,可以结束当前EXPLORER(因为EXPLORER与IEXPLORER是捆绑在一起的),然后肯定可以删掉该OCX,当前重起后,在不打开引用该OCX页面的情况下页可以删除该OCX。然后,重新利用IE安装OCX即可。
IE在第一次安装OCX时,做了如下几件事(前提是发布选项如我上述)
1、根据CODEBASE找到安装文件。如果找不到,则会出现你上述的问题。
2、下在INF到本地缓存中。
3、根据INF文件找到CAB文件。
4、下载CAB文件到本地缓存中。
5、解压出OCX文件到OC CACHE中。
6、更新注册表中的相关信息。
7、页面中载入该OCX并初始化。
8、执行页面的ONLOAD脚本函数。(一般可以在该函数中对控件的外观等属性做一些设置)。
以上任何一步出问题,OCX都不会成功装载。其中6有时会出问题。即,以前安装过该OCX控件,并使用DELPHI的REGISTER ACTIVEX注册过,那么IE在注册时有时会又问题,具体我还不是太确定。
以上是我做ACITVEX控件时的一点心得,写出来供大家参考,由于本人水平有限,错误在所难免,欢迎大家指正,同时也欢迎大家就ACTIVEX的开发进行讨论。