最近在做的一个B/S系统要在客户端读取USB锁的要求,所以就需要写一个OCX来验证。原来也没有做过,所以折腾了好几天,总算有点眉目了,所以把心得写下,交流下。首先要弄明白你要写的OCX是用在客户端还是用在服务器端假如用在客户端:1、创建打开delphi7,选择菜单“new”-“other”-“activex”-“activeform”-输入项目名称,系统自动给你创建了3个文件,一个是项目文件,一个是form的单元文件,还有一个后缀带TLB的文件。这三个文件中的你只需要更改form的单元文件,项目文件一般不需要写什么,TLB文件有系统自动维护。2、增加接口函数所谓接口函数就是调用OCX的程序可以直接调用的函数,如果你要写的函数不提供外部函数可以按常规声明就可以。但要声明接口函数则必须按步骤声明,有两种途径,其一:选择form单元文件,然后点击“edit”-“addtointerface”,弹出一个对话框,输入要声明的函数,如:functionfun:integer;其二:选择form单位文件,然后点击“view”-“TypeLibrary”,弹出一个对话框,然后点击工具栏中“addainterface”可以增加函数或过程。字串8说明:在这里注意几个地方,第一,一定要选form文件才可以,否则相应的菜单都是不可用的;第二、声明函数或过程的参数类型要注意string-BSTR(第二种途径)或WideString(第一种途径)。增加属性也函数类同。3、调试我是用html调试的,所以可用在delphi种配置run的参数“run”-“parametes”,弹出一对话框,在“hostapplication”中输入C:\ProgramFiles\InternetExplorer\IEXPLORE.EXE,在“parametes”中,这样就可以调试delphi代码了4、发布在没有build前,可以“project”-“webdeployment”中配置(主要输入ocx的地址和web服务器的url),然后可以“webdeploy”发布,其实就是生成了一个htm文件,不过该文件里包含了调用方法而已。但是delphi好像至运行执行一次,发布后这两个菜单就不可用了,甚至刚开始我不知道,直接编译了,编译后该菜单也不可用了。说明:如果没有用“webdeploy”发布,而想在网页中调用的,就要知道该ocx的GUID,可以在TLB文件中找,CLASS_XXX后面的就是,字串3这一点也需要注意。5、数字签名要想网页能够顺利使用ocx,就需要数字签名,否则IE直接就给干掉了,当然IE安全级调低除外。关于生成测试数字签名的方法,网上很多。我想要说得是,测试数字证书只能用在win2000系统,用在XP,特别是打了补丁的XP,根本不行。另外也可以参考《使用Delphi快速开发ActiveX控件》这篇文章如果用在服务器端:其实应该是COM组件了吧,asp的调用方式是%setobj=Server.CreateObject(DelphiCom.Test2)%1、创建打开delphi7,选择菜单“new”-“other”-“activex”-“activelibray”生成一个项目,然后再“new”-“other”-“activex”-“automationobject”,然后参照上面增加接口函数,就可以。不过编译出来是个dll,但是是可以注册的dll。“automationobject”也可以换成“comobject”,但两者是有区别的,具体可以网上查询。其它就不写了,希望能和各位交流。