最近在做的一個 B/S 系統(tǒng)要在客戶端讀取 USB 鎖的要求,所以就需要寫一個 OCX 來驗證。原來也沒有做過,所以折騰了好幾天,總算有點眉目了,所以把心得寫下,交流下。 首先要弄明白你要寫的 OCX 是用在客戶端還是用在服務器端
1、 創(chuàng)建 打開 delphi 7,選擇菜單“new”->“other”->“activex”->“active form”->輸入項目名稱,系統(tǒng)自動給你創(chuàng)建了3個文件,一個是項目文件,一個是 form 的單元文件,還有一個后綴帶 TLB 的文件。這三個文件中的你只需要更改 form 的單元文件,項目文件一般不需要寫什么,TLB 文件有系統(tǒng)自動維護。
2、 增加接口函數(shù) 所謂接口函數(shù)就是調用 OCX 的程序可以直接調用的函數(shù),如果你要寫的函數(shù)不提供外部函數(shù)可以按常規(guī)聲明就可以。但要聲明接口函數(shù)則必須按步驟聲明,有兩種途徑,其一:選擇 form 單元文件,然后點擊“edit”->“add to interface”,彈出一個對話框,輸入要聲明的函數(shù),如:function fun:integer;其二:選擇 form 單位文件,然后點擊“view”->“Type Library”,彈出一個對話框,然后點擊工具欄中“add a interface”可以增加函數(shù)或過程。說明:在這里注意幾個地方,第一,一定要選 form 文件才可以,否則相應的菜單都是不可用的;第二、聲明函數(shù)或過程的參數(shù)類型要注意 string->BSTR(第二種途徑)或 WideString(第一種途徑)。增加屬性也函數(shù)類同。
3、 調試 我是用html調試的,所以可用在 delphi 種配置run的參數(shù) “run”->“parametes”,彈出一對話框,在“host application”中輸入C:\Program Files\Internet Explorer\IEXPLORE.EXE, 在“parametes”中http://192.168.6.9/my.htm,這樣就可以調試 Delphi 代碼了
4、 發(fā)布 在沒有 build 前,可以“project”->“web deployment”中配置(主要輸入 ocx 的地址和 web 服務器的 url),然后可以“web deploy”發(fā)布,其實就是生成了一個 htm 文件,不過該文件里包含了調用方法而已。但是 delphi 好像至運行執(zhí)行一次,發(fā)布后這兩個菜單就不可用了,甚至剛開始我不知道,直接編譯了,編譯后該菜單也不可用了。說明:如果沒有用“web deploy”發(fā)布,而想在網頁中調用的,就要知道該 ocx 的 GUID,可以在 TLB 文件中找,CLASS_XXX 后面的就是,這一點也需要注意。
5、 數(shù)字簽名 要想網頁能夠順利使用 ocx,就需要數(shù)字簽名,否則IE直接就給干掉了,當然IE安全級調低除外。關于生成測試數(shù)字簽名的方法,網上很多。我想要說得是,測試數(shù)字證書只能用在 win2000系統(tǒng),用在 XP,特別是打了補丁的 XP,根本不行。另外也可以參考《使用 Delphi 快速開發(fā) ActiveX 控件》這篇文章如果用在服務器端:其實應該是 COM 組件了吧,asp 的調用方式是 |