论坛上很多朋友(也包括我)提到ActiveForm的发布问题,都没有得到很好的解决。
下面是本人开发ActiveForm的一点经验,拿出来跟大家分享,开发环境为 Win2000Server,IIS5.0,BCB5.0,Delphi也差不多的了。

先说说程序的开发,如果是从一般应用程序移植而来,注意所有的窗体(除了主窗体)都要动态创建,工程的选项里面是没有Auto-Create Forms的选项给你的。还有,很重要的就是要实现IObjectSafety接口,其实很简单,加上两句话就可以了(for BCB,摘自Borland新闻组borland.public.cppbuilder.activex,Delphi的嘛,对不起,不知道):

You have to implement the IObjectSafety interface.
I cut this code from a MSDN example and it worked great for me without any
changes. This code basically makes everything your control does safe for
scripting and initialization.
You can make the following changes in your class declaration:

class ATL_NO_VTABLE TYourcontrol:
.
.
 , public IObjectSafetyImpl<TYourcontrol>  // <--- Add this.

BEGIN_COM_MAP(TYourcontrol)
 .
 .
 COM_INTERFACE_ENTRY(IObjectSafety)   // <--- Add this
.
.
END_COM_MAP()

编译和调试就不说了,请大家查查论坛。还是提一下吧,编译时最好是把所有的包都编译进AvtiveForm里面去,方法和一般程序是一样的,不说了。

好了,正式开始了!
    开始设置了哦,近视的赶紧戴上眼镜,鼠标不好使的赶快换,键盘。。。。。。哎哟,好好好,就开始,就开始。。。。。。
Project->Web Deployment Options 打开设置选项卡。第一页,设置路径,这里根据实际情况填了,注意别填错了哦。下面是我的填法(我的IIS根目录是C:\Inetpub\wwwroot\,机子IP是192.168.0.88):
Target Dir: C:\Inetpub\wwwroot\
Target URl: http://192.168.0.88/
HTML Dir: C:\Inetpub\wwwroot\

接着是是一些可选项,一般都全部选上。第二页,包设置,如果你编译的时候把所有的包都编译进ActiveForm了,这里是不用设的,最好也是这样,要设的话,参考第三页的设置。第三页,附加文件,一般是一些供ActiveForm调用的DLL,很多朋友的控件装不上,很大原因是没设好这里。有时C++Builder会自动将所需的DLL添加到这里,有时则没有,真是搞不懂。。。。。。没办法,还是得用。如果不知道你的程序用了什么特别的DLL,可以用一些Show Dependency工具看。本人的ActiveForm用到了客户端数据集,需要midas.dll,所以我把它给加上了,CAB选项里面最好选压缩在同一个压缩包内,不然还要设下面的路径。路径的设置和第一页一样。
好了,大功告成!Project->Web Deploy,所设目录下就生成三个文件,一个inf安装文件,一个HTML文件,还有一个CAB格式的压缩包文件(也可能有多个,看你怎么设置的了)。不用做任何修改,打开HTML文件,就可以看到ActiveFrom了。到别的机子上,IE浏览器安全级别设为最低,输入那个HTML的地址,我这里是Http://192.168.0.88/PrintFormControl.htm,先是提示安装XXX.inf文件,然后提示安装XXX.cab文件,都点确定,就可以看到ActiveForm了。什么?看不见?那就只好回头看看有什么没做对的了。。。。。

就这么多了,反正我是这样发布成功的。。。。。。不知大家把自己的ActiveForm发布好了没有。还没有?真的?试过有100遍了吗?什么?都第1000遍了?
    哈哈哈哈哈哈哈。。。。。
    其实。。。其实还有更好更方便更简单更标准的方法!
啊!!!!哎哟。。。好疼。。。。别。。别。。我这里不收购烂眼镜和破鼠标,啊!不要再砸了!!!我说。。。我说。。。
下载一个做CAB压缩包的软件,我用的是PowerArchiver,找到微软的代码签名软件signcode.exe,搞到一个代码签名证书,http://www.ca365.com/可以申请到免费的证书,要不,可以自己做CA给自己发证书。好了,就这三样东西。然后修改或重新做一个.inf文件,内容大致如下:
[Add.Code]
PrintControl.ocx=PrintControl.ocx
midas.dll=midas.dll

[PrintControl.ocx]
file=thiscab
clsid={AECDCD52-732D-43AA-BB90-F8B784E1A169}
RegisterServer=yes
FileVersion=1,0,43,0

[midas.dll]
file=thiscab
FileVersion=6,0,6,163

再然后把*.ocx,*.dll还有那个.inf文件做成一个CAB压缩包。用signcode.exe和证书对这个压缩包进行代码签名。再修改HTML文件,内容大致如下:
<HTML>
<H1> C++Builder 5 ActiveX Test Page </H1><p>
You should see your C++Builder 5 forms or controls embedded in the form below.
<HR><center><P>
<OBJECT
   classid="clsid:AECDCD52-732D-43AA-BB90-F8B784E1A169"
   codebase="http://192.168.0.88/PrintFormControl.cab"
   width=100%
   height=100%
   align=center
   hspace=0
   vspace=0
>
</OBJECT>
</HTML>

好了,现在可以把IE的安全级别设为中了,ActiveForm照样下载运行。什么,不会用那几个软件?我可帮不了你了,自己看帮助吧,呵呵。

http://www.cnblogs.com/sonicit/archive/2008/04/20/1162131.html

Delphi ActiveForm发布全攻略的更多相关文章

  1. EhLib DBGridEh组件在Delphi中应用全攻略总结(转)

    EhLib DBGridEh组件在Delphi中应用全攻略总结(转) http://blog.sina.com.cn/s/blog_94b1b40001013xn0.html 优化SQL查询:如何写出 ...

  2. vc6开发ActiveX并发布全攻略(三)(转)

    一.环境: windows xp sp3 Microsoft VC++ 6.0 二.制作文件 打开iexpress.exe(windows提供的一个向导式cab制作工具,位置:C:\WINDOWS\s ...

  3. VSCode插件开发全攻略(十)打包、发布、升级

    更多文章请戳VSCode插件开发全攻略系列目录导航. 发布方式 插件开发完了,如何发布出去分享给他人呢?主要有3种方法: 方法一:直接把文件夹发给别人,让别人找到vscode的插件存放目录并放进去,然 ...

  4. Moon.Orm3.8技术全攻略

    Moon.ORM技术全攻略  一.绪论 本文主要是针对Moon.ORM的技术的讨论及其使用使用指导.如有其它疑问,请留言.本文主要针对Moon.ORM3.9版本,同时将会对4.0做一个技术预览.本文从 ...

  5. 在net安装程序中部署oracle客户端全攻略

    在net安装程序中部署oracle客户端全攻略 主要的是要做三件工作: 打包文件,写注册表,注册环境变量说明:我的oracle版本为9, 在2000 advanced server 上测试通过,可以正 ...

  6. [置顶] 创建GitHub技术博客全攻略

    [置顶] 创建GitHub技术博客全攻略 分类: GitHub2014-07-12 13:10 19710人阅读 评论(21) 收藏 举报 githubio技术博客网站生成 说明: 首先,你需要注册一 ...

  7. 【转载】Google Analytics 使用图文全攻略

    转载自:Google Analytics 使用图文全攻略 最近一段时间,因为工作的需要,小励使用GA(GA是Google Analytics的简称)比较频繁,所以花时间研究了一下,从不太了解到会使用( ...

  8. 开发小白也毫无压力的hexo静态博客建站全攻略 - 躺坑后亲诉心路历程

    目录 基本原理 方法1 - 本机Windows下建站 (力荐) 下载安装node.js 用管理员权限打开命令行,安装hexo-cli和hexo 下载安装git 初始化hexo 使用hexo gener ...

  9. maven教程全攻略

    maven教程全攻略 我们在开发项目的过程中,会使用一些开源框架.第三方的工具等等,这些都是以jar包的方式被项目所引用,并且有些jar包还会依赖其他的jar包,我们同样需要添加到项目中,所有这些相关 ...

随机推荐

  1. [TJOI2009]开关 (线段树)

    题目描述 现有N(2 ≤ N ≤ 100000)盏灯排成一排,从左到右依次编号为:1,2,......,N.然后依次执行M(1 ≤ M ≤ 100000)项操作,操作分为两种:第一种操作指定一个区间[ ...

  2. 「CodePlus 2018 3 月赛」白金元首与莫斯科

    $n \leq 17,m \leq 17$,$n*m$的01矩形,对每一个0问:当他单独变成1之后,在其他0处放多米诺牌(不一定放满,可以不放)的方案数.膜$1e9+7$. 直接$dp$是$n^42^ ...

  3. 矩阵乘法 BZOJ 2738

    矩阵乘法 [问题描述] 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. [输入格式] 第一行两个数N,Q,表示矩阵大小和询问组数:接下来N行N列一共N*N个数,表示这个矩阵: ...

  4. C#.net的常用函数列表

    原文发布时间为:2008-08-03 -- 来源于本人的百度文章 [由搬家工具导入] 1、DateTime 数字型 System.DateTime currentTime=new System.Dat ...

  5. zoj 3627#模拟#枚举

    Treasure Hunt II Time Limit: 2 Seconds                                     Memory Limit: 65536 KB    ...

  6. 测试开发系列之Python开发mock接口(二)

    上一篇咱们已经把开发前的环境准备好了,还需要再做一点准备,你的账户信息是存在哪的呢,当然是存在数据库里的,咱们在去支付,扣钱的时候,肯定是从数据库里面操作的,去更新账户表里面的数据,所以咱们先要把数据 ...

  7. Codeforces Round #307 (Div. 2) D. GukiZ and Binary Operations

    得到k二进制后,对每一位可取得的方法进行相乘即可,k的二进制形式每一位又分为2种0,1,0时,a数组必定要为一长为n的01串,且串中不出现连续的11,1时与前述情况是相反的. 且0时其方法总数为f(n ...

  8. luogu P3865 【模板】ST表

    题目背景 这是一道ST表经典题——静态区间最大值 请注意最大数据时限只有0.8s,数据强度不低,请务必保证你的每次查询复杂度为 O(1)O(1) 题目描述 给定一个长度为 NN 的数列,和 MM 次询 ...

  9. postgresql 导出建表语句的方法-类似describe table

    https://www.youtube.com/watch?v=PMfcsYzj-9M  这个视频不错, The Definitive Guide to Object-Oriented JavaScr ...

  10. linux shell操作

    ---------------------------------------------------- 原文:http://unix.stackexchange.com/questions/2863 ...