C#中引用第三方ocx控制項引發的問題以及解決辦法

來源:互聯網
上載者:User

標籤:and   spi   項目   roo   play   位置   聲明   cti   activex   

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

不用工具箱的話,自己手工添加,需要注意一個問題,就是要用Aximp.exe來封裝一下ocx控制項的類,然後再程式中引用產生的dll就可以了。
aximp [options]{file.dll | file.ocx}
The following command generates MediaPlayer.dll and AxMediaPlayer.dll for the Media Player control msdxm.ocx.
aximp c:/systemroot/system32/msdxm.ocx

ActiveX 控制項匯入程式將 ActiveX 控制項的 COM 類別型庫中的類型定義轉換為 Windows 表單控制項。
Windows 表單只能承載 Windows 表單控制項,即從 Control 派生的類。Aximp.exe 產生可承載於 Windows 表單上的 ActiveX 控制項的封裝類。這使您得以使用可應用於其他 Windows 表單控制項的同一設計時支援和編程方法論。若要承載 ActiveX 控制項,必鬚生成從 AxHost 派生的封裝控制項。此封裝控制項包含基礎 ActiveX 控制項的一個執行個體。它知道如何與 ActiveX 控制項通訊,但它顯示為 Windows 表單控制項。這個產生的控制項承載 ActiveX 控制項並將其屬性、方法和事件公開為產生控制項的屬性、方法和事件。

如果不封裝一下直接用,會出現 災難性 錯誤。上面已經說明了原因。

在項目中引用產生的ax開頭的dll,在表單代碼中增加:
聲明一個公有的控制項對象:
public AxISPICRECLib.AxISPICREC AxISPICREC;
在InitializeComponent()方法內初始化控制項:
AxISPICREC = new AxISPICRECLib.AxISPICREC();//必須new對象,否則表單設計器出問題
            ((System.ComponentModel.ISupportInitialize)(this.AxISPICREC)).BeginInit();//初始化開始
            this.Controls.Add(this.AxISPICREC);//添加控制項
            ((System.ComponentModel.ISupportInitialize)(this.AxISPICREC)).EndInit();

如果不這樣做,會出現引發類型為“System.Windows.Forms.AxHost+InvalidActiveXStateException”的異常。

            this.AxISPICREC.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("AxISPICREC.OcxState")));//設計控制項狀態

如果遇到“正試圖在 os 載入程式鎖內執行Managed 程式碼”這個錯誤,請設定“調試”--“異常”
"----"Managed Debugging Assistants"中勾掉"LoaderLock" 就可以了。

C#中引用第三方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.