JAVASCRIPT 調用 OCX 的那些坑


這個東西我之前已經想寫了,但是在我寫完“制作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 瀏覽器。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM