2009-01-12 12:18:01| 分类: delphi | 标签: |举报 |字号大中小 订阅 html
用Delphi开发OCX的心得web
最近在作的一个B/S系统要在客户端读取USB锁的要求,因此就须要写一个OCX来验证。原来也没有作过,因此
折腾了好几天,总算有点眉目了,因此把心得写下,交流下。安全
首先要弄明白你要写的OCX是用在客户端仍是用在服务器端
假如用在客户端:
一、建立
打开delphi 7,选择菜单“new”->“other”->“activex”->“active form”->输入项目名称,
系统自动给你建立了3个文件,一个是项目文件,一个是form的单元文件,还有一个后缀带TLB
的文件。这三个文件中的你只须要更改form的单元文件,项目文件通常不须要写什么,TLB文件
有系统自动维护。
二、增长接口函数
所谓接口函数就是调用OCX的程序能够直接调用的函数,若是你要写的函数不提供
外部函数能够按常规声明就能够。但要声明接口函数则必须按步骤声明,有两种途径,其一:选择form
单元文件,而后点击“edit”->“add to interface”,弹出一个对话框,输入要声明的函数,如:function fun:integer;
其二:选择form单位文件,而后点击“view”->“Type Library”,弹出一个对话框,而后点击工具栏中“add a interface”
能够增长函数或过程。
说明:在这里注意几个地方,第一,必定要选form文件才能够,不然相应的菜单都是不可用的;第2、声明函数或
过程的参数类型要注意string->BSTR(第二种途径)或WideString(第一种途径)。
增长属性也函数类同。
三、调试
我是用html调试的,因此可用在delphi种配置run的参数
“run”->“parametes”,弹出一对话框,在“host application”中输入C:\Program Files\Internet Explorer\IEXPLORE.EXE,
在“parametes”中http://192.168.6.9/my.htm,这样就能够调试delphi代码了
四、发布
在没有build前,能够“project”->“web deployment”中配置(主要输入ocx的地址和web服务器的url),而后能够“web deploy”发布,
其实就是生成了一个htm文件,不过该文件里包含了调用方法而已。可是delphi好像至运行执行一次,发布后这两个菜单就不可用了,
甚至刚开始我不知道,直接编译了,编译后该菜单也不可用了。
说明:若是没有用“web deploy”发布,而想在网页中调用的,就要知道该ocx的GUID,能够在TLB文件中找,CLASS_XXX后面的就是,
这一点也须要注意。
五、数字签名
要想网页可以顺利使用ocx,就须要数字签名,不然IE直接就给干掉了,固然IE安全级调低除外。关于生成测试数字签名的方法,网上不少。
我想要说得是,测试数字证书只能用在win2000系统,用在XP,特别是打了补丁的XP,根本不行。
另外也能够参考《使用Delphi快速开发ActiveX控件》这篇文章
若是用在服务器端:
其实应该是COM组件了吧,asp的调用方式是
<%
set obj=Server.CreateObject("DelphiCom.Test2")
%>
一、建立
打开delphi 7,选择菜单“new”->“other”->“activex”->“active libray”生成一个项目,而后再
“new”->“other”->“activex”->“automation object”,而后参照上面增长接口函数,就能够。不过编译出来是个dll,可是是能够注册的dll。
“automation object”也能够换成“com object”,但二者是有区别的,具体能够网上查询。
其它就不写了,但愿能和各位交流。服务器