分类: WINDOWS
2008-08-28 11:20:15
最近在做的一个 B/S 系统要在客户端读取 USB 锁的要求,所以就需要写一个 OCX 来验证。原来也没有做过,所以折腾了好几天,总算有点眉目了,所以把心得写下,交流下。
首先要弄明白你要写的 OCX 是用在客户端还是用在服务器端
假如用在客户端:
1、 创建
打开 delphi 7,选择菜单“new”->“other”->“activex”->“active form”->输入项目名称,系统自动给你创建了3个文件,一个是项目文件,一个是 form 的单元文件,还有一个后缀带 TLB 的文件。这三个文件中的你只需要更改 form 的单元文件,项目文件一般不需要写什么,TLB 文件有系统自动维护。
2、 增加接口函数
所谓接口函数就是调用 OCX 的程序可以直接调用的函数,如果你要写的函数不提供外部函数可以按常规声明就可以。但要声明接口函数则必须按步骤声明,有两种途径,其一:选择 form 单元文件,然后点击“edit”->“add to interface”,弹出一个对话框,输入要声明的函数,如:function fun:integer;其二:选择 form 单位文件,然后点击“view”->“Type Library”,弹出一个对话框,然后点击工具栏中“add a interface”可以增加函数或过程。说明:在这里注意几个地方,第一,一定要选 form 文件才可以,否则相应的菜单都是不可用的;第二、声明函数或过程的参数类型要注意 string->BSTR(第二种途径)或 WideString(第一种途径)。增加属性也函数类同。
3、 调试
我是用html调试的,所以可用在 delphi 种配置run的参数 “run”->“parametes”,弹出一对话框,在“host application”中输入C:\Program Files\Internet Explorer\IEXPLORE.EXE, 在“parametes”中,这样就可以调试 Delphi 代码了
4、 发布
在没有 build 前,可以“project”->“web deployment”中配置(主要输入 ocx 的地址和 web 服务器的 url),然后可以“web deploy”发布,其实就是生成了一个 htm 文件,不过该文件里包含了调用方法而已。但是 delphi 好像至运行执行一次,发布后这两个菜单就不可用了,甚至刚开始我不知道,直接编译了,编译后该菜单也不可用了。说明:如果没有用“web deploy”发布,而想在网页中调用的,就要知道该 ocx 的 GUID,可以在 TLB 文件中找,CLASS_XXX 后面的就是,这一点也需要注意。
5、 数字签名