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」,但二者是有區別的,具體能夠網上查詢。
其它就不寫了,但願能和各位交流。服務器