在研究掛馬網頁的時候,為了獲得乙個網頁呼叫的activex的函式,想出了如下方法:
hook cogetclassobject和cogetclassobjectfromurl,ie建立acitivex的時候都呼叫這兩個函式。
函式原型如下
cogetclassobjectfromurl(refclsid rclassid, lpcwstr szcode, dword dwfileversionms, dword dwfileversionls, lpcwstr sztype, lpbindctx pbindctx, dword dwclscontext, lpvoid pvreserved, refiid riid, lpvoid * ppv)
cogetclassobject(refclsid rclsid, dword dwclscontext, lpvoid pvreserved,refiid riid, lpvoid far* ppv)
其中 rclassid 是需要建立的activex,lpvoid far* ppv是返回的介面指標,
對於我們感興趣的activex,我們直接返回自己實現的 idispatch 介面,指令碼要呼叫activex的函式,都需要呼叫 idispatch的 getidsofnames方法來獲得函式的invoke id,該方法原型如下:
getidsofnames(refiid riid,
lpolestr __rpc_far *rgsznames,
uint cnames,
lcid lcid,
dispid __rpc_far *rgdispid);
其中,rgsznames就是網頁將要呼叫的函式名。
對於從ie不用guid,而用progid呼叫activex的方法,需要hook clsidfromprogid和clsidfromprogidex。
在網頁中呼叫ActiveX
最主要的就是這個了,在html中加入object的標籤 1.如果是用vc開發,classid等資訊可以從控制項工程的.odl檔案來找 我的控制項如下 2.如果是用visual studio,可以用它自帶的小工具ole view 3.如果控制項已經被註冊了,可以直接檢視嘍 在js裡面呼叫ocx的函式則...
關於網頁呼叫ActiveX控制項的補充
實現了isafeobject介面或是使用分組管理器 component categories manager 標記安全控制項 前提 1。在ax控制項中已經實現了isafeobject介面 或是修改了登錄檔 3。檢視登錄檔,發現我的cab中的控制項 ocx 及其依賴的dll已經成功的註冊到機器中。這點...
C 中對ActiveX控制項的呼叫
一 不生成具有強名稱的程式集 1.使用下面這兩個命令將com控制項轉換成.net程式集 aximp c windows system shdocvw.dll tlbimp mshtml.tlb aximp將產生兩個檔案 axshdocvw.dll and shdocvw.dll.tlbimp將產生m...