VS2017 OCX 開發歷險記

一:OCX控件在web頁面不能加載的問題 SCRIPT3: 找不到成員 IObjectSafety接口

二:製作完OCX控件之後,就要給控件加上數字簽名,否則當用戶下載安裝時,系統會直接禁止該控件的安裝,除非事先對IE設置降低了安全級別。

三:製作OCX

VS2017,WIN10

客戶,嗯,就是給錢的主,要求提供OCX控件以方便Web上用Js調用。

腦子一片空白!

搜!

結果多數是VS2010、VS2012,沒有VS2017分享。果然OCX要沒落了。

但是客戶是上帝啊!

先是下載到2個VS老版本的,還是一頭霧水。一遍一遍看,一遍一遍查,過程如下。

1,自動生成工程,基本上一路下一步

 改了這一部分

2,先編譯一下,正確生成

3,註冊

regsvr32  C:\Users\dvs-1\Documents\Visual Studio 2017\Projects\MFCActiveXControl1\Debug\MFCActiveXControl1.ocx

如果OCX用到了其它自定義的DLL,需要跟普通EXE一樣部署,同路徑下或者Windows路徑下。

4,debug調試, OCX在網頁中是以object方式實現引用的。在VS中設置斷點是不能被觸發的。

<OBJECT  type="application/x-oleobject"  classid="clsid:2F434CDB-87F8-4474-A712-68B7E5D6F49F" id="TestOCX" name="TestOCX" width="1px" height="1px" ></OBJECT>

classid 是在這樣位置的uuid。idl中有多個uuid,需要用這個。 idl中最後一個。

或者在註冊表中查詢控件名稱,找到如下路徑也可以。不清楚是不是因爲控件是32位的,路徑爲wow6432node。 

5,添加接口方法,需要切換到“類視圖”

 

6,添加接口事件,同上,需要切換到“類視圖”

7,接口事件不能被JS響應

如果在構造函數調用事件,在web端不能觸發此事件。最後我初始化放在了一個接口方法中。也就是由JS調用接口方法,在方法中完成初始化。在接口函數中調用接口事件進行反饋。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章