1. 程式人生 > >JAVASCRIPT 調用 OCX 的那些坑

JAVASCRIPT 調用 OCX 的那些坑

code images cli size 註冊表 button element 但是 lsi

這個東西我之前已經想寫了,但是在我寫完“制作OCX”,“MFC應用OCX” 之後,html 調用OCX 就一直不成功,搞了好久,都快要放棄了。昨天領導需要我這邊完成一個通過瀏覽器啟動外部應用程序這樣一個功能,限於公司懂OCX 的不多,就擔起了這個任務。我知道之前嘗試的時候就失敗了,所以這次又進了那個坑,坑了我好久,直到快下班前才解決。

記錄下解決方法。

一,首先準備一個可以正常運行的OCX。

這個東西還是用c++寫比較方便,前幾篇已經寫過了,就不多贅述了。

二,準備一個註冊和卸載OCX 的批處理文件

註冊.bat

regsvr32 "%~dp0ocx15.ocx"

卸載.bat

regsvr32 "%~dp0ocx15.ocx" -u

三,準備一個調用OCX 的html 文件

<html>
<head>
<script type="text/JavaScript" language="javascript"> 
 function show(string1)
 {
       alert(123);
       var obj = document.getElementById("TestOcx");
       alert(obj);
       var ret = obj.StartApplication(string1);
       alert(ret);
 }
</script> </head> <body > <object id="TestOcx" width="" height="" classid="clsid:440BF279-30B8-41D2-AFE7-F19141110C96"> </object> </OBJECT> <input type="button" id="btn1" name="btn1" value="調用ocx" title="調用ocx" onclick="show(‘file:///D:/SE-1515/ECGWorkstation.exe.lnk‘)"></
input> </body> </html>

這裏的classid 一定要註意,當時我看到OCX工程中idl 文件下UUID 有很多個,我也不知道用哪個,就用了文件最上面的一個uuid,結果呢,就是因為uuid錯誤,調試了好久。這裏的uuid 最好從註冊表中拿到,拿的方法如下:

在運行中鍵入 regedit 進入註冊表編輯器中,在編輯選項中點擊查找,

技術分享

技術分享

這是就找到我們註冊的OCX 了。這裏的440BF279-30B8-41D2-AFE7-F19141110C96 就是我們要的clsid,

這時,html 頁面還不一定能顯示出這個OCX控件,需要在Internet 選項中,啟用 ActiveX ,方便起見,我把該項下,所有的用ActiveX 的都啟用了。

技術分享

同時在高級選項下,去掉那3個檢查項。

技術分享

這個時候,你的html 頁面應該會可以顯示出OCX控件了,當然你也隱藏,調用OCX 應該就沒什麽問題了,html 調用OCX 這個只能試用於IE 瀏覽器,別問我為什麽,都是微軟的東西。

技術分享

四,註意事項

1, 註意clsid一定要正確

2, 註意Internet選項裏面的設置。

3, 註意一定要是IE 瀏覽器。

JAVASCRIPT 調用 OCX 的那些坑