C#調用ActiveX控制項

來源:互聯網
上載者:User

背景:最近項目中需要用到ActiveX控制項,項目是在.Net平台下開發的。因此就直接在項目中添加了對ActiveX控制項的引用,添加引用成功。在代碼中執行個體化類的執行個體也沒有問題,但在調用其方法或屬性時總是拋出"未處理 COMException"異常。

 

方法一:

1、在系統中註冊該ocx控制項,命令:regsvr32.exe 控制項位置(加 /u 參數是取消註冊);
2、在.net的工具箱中添加該控制項,拖到form中去就可以了。

方法二:

1、用Aximp.exe來封裝一下ocx控制項的類;

2、在程式中引用產生的dll就可以了。

區別:

1、方法一不需要手動封裝ocx控制項,方法二需要;

2、方法一需要將控制項先添加到工具箱,方法二不需要。

 

 ************************************************************************

關於Aximp.exe封裝ock控制項在msdn中一段相關文字,連結:http://msdn.microsoft.com/zh-cn/library/8ccdh774(VS.80).aspx 

 

連結內容:

 

Windows 表單 ActiveX 控制項匯入程式 (Aximp.exe) ActiveX 控制項匯入程式將 ActiveX 控制項的 COM 類別型庫中的類型定義轉換為 Windows 表單控制項。Windows 表單只能承載 Windows 表單控制項,即從 Control 派生的類。Aximp.exe 產生可承載於 Windows 表單上的 ActiveX 控制項的封裝類。這使您得以使用可應用於其他 Windows 表單控制項的同一設計時支援和編程方法論。若要承載 ActiveX 控制項,必鬚生成從 AxHost 派生的封裝控制項。此封裝控制項包含基礎 ActiveX 控制項的一個執行個體。它知道如何與 ActiveX 控制項通訊,但它顯示為 Windows 表單控制項。這個產生的控制項承載 ActiveX 控制項並將其屬性、方法和事件公開為產生控制項的屬性、方法和事件。aximp [options]{file.dll | file.ocx} 備忘參數:說明  file:包含要轉換的 ActiveX 控制項的源檔案名稱。檔案參數中必須有副檔名 .dll 或 ocx。選項:說明/delaysign:指定 Aximp.exe 用延遲的簽名操作對結果控制項進行簽名。此選項必須與 /keycontainer:、/keyfile: 或 /publickey: 選項一起指定。有關延遲的簽名過程的更多資訊,請參見延遲為程式集簽名。/help :
顯示該工具的命令文法和選項。/keycontainer: containerName:
使用在 containerName 所指定的密鑰容器中找到的公開金鑰/私密金鑰對,用強式名稱對結果控制項進行簽名。
 
/keyfile: filename:
使用在 filename 中找到的發行者的正式公開金鑰/私密金鑰對,用強式名稱對結果控制項進行簽名。
 
/nologo:
取消顯示 Microsoft 啟動標題。
 
/out: filename:
指定要建立的程式集的名稱。
 
/publickey: filename:
使用在 filename 所指定的檔案中找到的公開金鑰,用強式名稱對結果控制項進行簽名。
 
/silent:
取消顯示成功訊息。
 
/source:
產生 Windows 表單封裝的 C# 原始碼。
 
/verbose:
指定詳細模式;顯示附加的進度資訊。
 
/? :
顯示該工具的命令文法和選項。Aximp.exe 一次轉換整個 ActiveX 控制項類型庫,併產生一組程式集,這些程式集包含在原始類型庫中定義的類型的公用語言運行庫中繼資料和控制項實現。產生的檔案按照下面的模式命名:COM 類別型的公用語言運行庫代理:progid.dllActiveX 控制項的 Windows 表單代理(其中 Ax 表示 ActiveX):Axprogid.dll注意
如果 ActiveX 控制項的成員名稱與 .NET Framework 中定義的名稱匹配,則 Aximp.exe 在建立 AxHost 衍生類別時,將在成員名稱前加上首碼“Ctl”。例如,假設 ActiveX 控制項有一個名為“Layout”的成員,由於在 .NET Framework 中定義了 Layout 事件,因此該成員在 AxHost 衍生類別中將重新命名為“CtlLayout”。可以使用 MSIL 反組譯工具 (Ildasm.exe) 這樣的工具檢查這些產生的檔案。注意,在 ActiveX 控制項 shdocvw.dll 上運行 Aximp.exe 將總是在運行該工具的目錄中建立另一個名為 shdocvw.dll 的檔案。如果將此組建檔案放在“Documents and Settings”目錄下,則會導致 Microsoft Internet Explorer 和 Windows 資源管理員出現問題。重啟電腦時,Windows 在查看 system32 目錄之前首先查看“Documents and Settings”目錄,以尋找 shdocvw.dll 的副本。它將使用在“Documents and Settings”目錄中找到的副本,並嘗試載入託管的封裝。由於 Internet Explorer 和 Windows 資源管理員依賴於 system32 目錄中的 shdocvw.dll 版本中的呈現引擎,因此它們將無法正常工作。如果出現此問題,請在“Documents and Settings”目錄中刪除 shdocvw.dll 的副本,然後重啟電腦。 樣本
下面的命令為媒體播放器控制項 msdxm.ocx 產生 MediaPlayer.dll 和 AxMediaPlayer.dll。aximp c:/systemroot/system32/msdxm.ocx

 ************************************************************************

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.