我用DELPHI写了一个关于报表打印的ActiveX的控件,用delphi菜单下的RUN--Register ActiveX生成一个OCX文件。然后用delphi菜单下的Project--web deploy
进行了WEB发布,在这一过程中生也一个HTML文件和一个INF文件。
INF文件如下:
Delphi-generated INF file for AirActiveFormProj1.ocx
[Add.Code]
AirActiveFormProj1.ocx=AirActiveFormProj1.ocx
midas.dll=midas.dll[AirActiveFormProj1.ocx]
file=./AirActiveFormProj1.ocx
clsid={5DEAAEC4-ACC2-42F3-B0DD-2567FD8FC5A5}
RegisterServer=yes
FileVersion=1,0,6,0[midas.dll]
file=./midas.dll
FileVersion=7,0,4,453由于我在这个ActiveX控件中用到了TclientDataSet控件,所以必面把MIDAS这个文件包含进去。然后我再用如下的方法把生成的这个OCX文件和MIDAS。DLL和INF文件打成一个CAB包。
运行cmd命令进入DOS命令窗口,敲入iexpress,回车。
> 弹出一个新窗口,直接点下一步,选第三项,下一步,先添加inf
> 再添加ocx,最后加dll,下一步,输入小于八位的文件名,选第一个。OK最后我用一个名叫CERT工具进行数字签名:
这个http://www.8421.org/download.php?id=156 ActiveForm制作与签名完全手册
签名成功,然后我把文件部署到我的应用服务器上去(weblogic)运行该ActiveX的JSP页面。弹出一个安全设置警告对话框,我是狂喜,以为成功,马上点击“是”,可马上又
弹出哪个该死的“当前安全设置禁止该ActiveX运行,因此该页无法显示”,我晕,忙活了半天,结果还是一场空,没办法,设置一下IE的安全级别,刷新页面,结果出来。怎么样才
能把哪个该死的鸟框去掉,不用设置IE的安全级别就出来啦,我没辙,请各们高人看看。出错在什么地方。
我在JSP页面是这样引用的。
</head>
<body>
<center>
<OBJECT
name="AirActiveX"
classid="clsid:5DEAAEC4-ACC2-42F3-B0DD-2567FD8FC5A5"
codebase="./no_1.CAB"
width=774
height=456
align=center
hspace=0
vspace=0
></OBJECT>其中NO_1中把INF,OCX,midas.dll打包生成的文件,最后的数字签名我也是该包签的名。在打包的过程中还生成了一个no.inf和no.sed这两个文件,我也把它放在应用服务器上啦!
进行了WEB发布,在这一过程中生也一个HTML文件和一个INF文件。
INF文件如下:
Delphi-generated INF file for AirActiveFormProj1.ocx
[Add.Code]
AirActiveFormProj1.ocx=AirActiveFormProj1.ocx
midas.dll=midas.dll[AirActiveFormProj1.ocx]
file=./AirActiveFormProj1.ocx
clsid={5DEAAEC4-ACC2-42F3-B0DD-2567FD8FC5A5}
RegisterServer=yes
FileVersion=1,0,6,0[midas.dll]
file=./midas.dll
FileVersion=7,0,4,453由于我在这个ActiveX控件中用到了TclientDataSet控件,所以必面把MIDAS这个文件包含进去。然后我再用如下的方法把生成的这个OCX文件和MIDAS。DLL和INF文件打成一个CAB包。
运行cmd命令进入DOS命令窗口,敲入iexpress,回车。
> 弹出一个新窗口,直接点下一步,选第三项,下一步,先添加inf
> 再添加ocx,最后加dll,下一步,输入小于八位的文件名,选第一个。OK最后我用一个名叫CERT工具进行数字签名:
这个http://www.8421.org/download.php?id=156 ActiveForm制作与签名完全手册
签名成功,然后我把文件部署到我的应用服务器上去(weblogic)运行该ActiveX的JSP页面。弹出一个安全设置警告对话框,我是狂喜,以为成功,马上点击“是”,可马上又
弹出哪个该死的“当前安全设置禁止该ActiveX运行,因此该页无法显示”,我晕,忙活了半天,结果还是一场空,没办法,设置一下IE的安全级别,刷新页面,结果出来。怎么样才
能把哪个该死的鸟框去掉,不用设置IE的安全级别就出来啦,我没辙,请各们高人看看。出错在什么地方。
我在JSP页面是这样引用的。
</head>
<body>
<center>
<OBJECT
name="AirActiveX"
classid="clsid:5DEAAEC4-ACC2-42F3-B0DD-2567FD8FC5A5"
codebase="./no_1.CAB"
width=774
height=456
align=center
hspace=0
vspace=0
></OBJECT>其中NO_1中把INF,OCX,midas.dll打包生成的文件,最后的数字签名我也是该包签的名。在打包的过程中还生成了一个no.inf和no.sed这两个文件,我也把它放在应用服务器上啦!
ActiveForm制作与签名完全手册
makecert -sv "a.pvk" -n "CN=A" a.cer
cert2spc a.cer a.spc
cabarc -s 6144 n ActiveFormProj.cab ActiveFormProj.ocxsigncode -spc a.spc -v a.pvk ActiveFormProj.cab -a md5 -n "a" -i "www.a.com"
chktrust.exe ActiveFormProj.cab你参考看看。
另外:你的IE的安全设置会不会太高?使用缺省安全设置看看?
2,制作好ActiveForm如下:
3,Web发布设置如图:
4.设置好选项:
5.发布测试网页。
6.运行测试网页,在浏览器未安全降级情况下如图:
7.下面开始数字签名:a.我把工具包放到c:盘。
b.运行c:\cert\makecert -sv "千中元是混蛋.pvk" -n "CN=BlackDragon" lazycat.cer
如图
弹出如下窗口,输入密码保护。
至此,cert证书制作完毕。
c.开始证书spc转换。
运行 c:\cert2spc lazycat.cer lazycat.spc 如图
d.开始数字签名。
运行signcode (双击) 结果如图
单击从文件选择(F)
单击下一步
浏览,选择c:\cert\千中元是混蛋.pvk 单击下一步
输入创建证书时的密码.
选择加密为md5 下一步
直接下一步
下一步.
时间戳地址为: http://timestamp.verisign.com/scripts/timstamp.dll
加入时间戳注意要连接上163,或者可以出国.
输入制作证书时的密码。
签名完毕。8.运行测试网页
运行效果如图:
这样在浏览器不降级就可以下载自己制作的*.ocx控件了。
当然,你也可以把浏览器安全降级,这样就不这么麻烦了。 :)
我写这个并不是要分,我希望大家能帮我写个opc client
详细请看http://delphi.mychangshu.com
工控栏目下的工控源码下的opc server,编译时用到栏目里的opc source组件包。
赵海
2002-3-31