文章出處

調用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 Debugging Assistants"中勾掉"LoaderLock" 就可以了。

 

//當前MRViewer.ocx是否已經注冊過 32位
            Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey("CLSID\\{FD44D72B-E01D-435C-8CAB-EF68843C2A12}\\");
            int i = -1;
            if (rk == null)
            {
                //>=0注冊成功, <0 注冊失敗
                i = DllRegisterServer();
            }
            if (rk != null || i >= 0)
            {
                InitializeComponent();
            }
            else
            {
                MessageBox.Show("MRViewer組件未注冊!");
            }
//有些電腦會報缺少midas.dll

文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()