OCX轉成CABhtml
最近有個項目,用到這項內容。折騰了很長時間,總算是搞定了。java
原理是這樣的:在IE上安裝OCX控件,控件調用動態庫,而後動態庫來操做POS機進行交易。動態庫以及配置文件放置的位置由OCX中來肯定。咱們的OCX是到當前宿主程序下去讀,這裏也就是IE所在的目錄。須要注意的是,64位系統應該將配置文件及動態庫放置在Program Files (x86)下的宿主程序目錄,由於插件的開發環境是在32位系統下。若是僅僅是OCX文件,那麼安裝的話就須要手動進行註冊。轉換成CAB的好處就是,瀏覽器打開網頁後,會自動檢測這個插件,而後提示安裝。那麼這個安裝過程就徹底自動化了。shell
在囉嗦一句,最上層是經過JavaScript來調用控件中的函數。瀏覽器
那麼,咱們的重點就在於將OCX轉成CAB。函數
第一步,寫一個.inf文件,這裏咱們命名MakeCAB.inf,文件內容以下:this
[version] signature="$CHINA$" AdvancedINF=1.0 [Add.Code] trans.ocx=trans.ocx [trans.ocx] file-win32-x86=thiscab clsid={37E957C6-82B4-48AA-8C68-BE926A3589A3} FileVersion=1,0,0,1 RegisterServer=yes
須要說明的是,clsid應該是控件生成的時候就已經有了。[Add.Code]下面就是添加要打包的文件,可能還包含一些dll文件等,這裏咱們只有一個控件文件。若是還包含dll文件的話,那麼後面還須要繼續添加對dll文件的說明。這裏給出一個大體的例子:spa
第二步,經過命令插件
cabarc.exe -s 6144 N E:\OCX\trans.cab MakeCAB.inf E:\OCX\trans.ocx
生成一個CAB文件。
code
第三步,製做數字證書。經過命令:htm
makecert /sv "chinaums.PVK" /n "CN=chinaums.com" chinaums.cer
,過程當中須要屢次輸入密碼,我也不知道若是前兩次的輸入不一致會怎樣,我這裏輸入的密碼都是同樣的。這樣就會生成兩個文件,一個是chinaums.cer數字證書文件,另外一個chinaums.PVK是私鑰文件。
第四步,給CAB進行數字簽名。運行signcode.exe,按照提示一部一部操做:
最後一步須要注意,若是按照默認的話可能會報錯,咱們這裏選擇第三項。而後繼續日後走,就能夠成功的對CAB進行數字簽名。
服務端的html文件中添加以下代碼:
<object id="trans" classid="clsid:37E957C6-82B4-48AA-8C68-BE926A3589A3" codebase="trans.CAB#version=1,0,0,1" style="display:none;" > </object>
clsid按照本身的來。Version也按照本身的配置文件來,CAB名字也同樣,該成本身的名字。JavaScript調用示例以下:
function doQD(){ var trans=document.getElementById("trans"); var wsh=trans.DoICBCZJMisTranSTD("4001","","","",""); alert(wsh); }
而後將CAB文件放在和這個html同目錄下,啓動服務,IE打開就會提示你自動安裝。可是,因爲這裏的證書是本身作的,確定不會被IE信任,那麼這就須要對瀏覽器作必定的設置。進入IE的Internet選項,以下,注意打鉤的選項卡:
這樣就算完成了。看控件是否安裝成功,運行regedit命令,而後編輯à查找,輸入您的clsid進行查找,若是能查找到就說明控件註冊成功。
話說回來,這種過期的技術,就沒有必要在深刻的折騰了,能用就好了,唉,蛋疼死了。