關于Windows中ActiveX控件注冊

發表于:2007-07-14來源:作者:點擊數: 標簽:
自從Microsoft公司于1996年推出ActiveX技術以來,ActiveX技術已得到了許多軟件公司的支持和響應,并紛紛在其產品中融入ActiveX技術。而作為ActiveX技術之一的ActiveX控件也得到了迅猛的發展,不但各大軟件公司推出了不少ActiveX 控件,ActiveX控件更是得到一
自從Microsoft公司于1996年推出ActiveX技術以來,ActiveX技術已得到了許多軟件公司的支持和響應,并紛紛在其產品中融入ActiveX技術。而作為ActiveX技術之一的ActiveX控件也得到了迅猛的發展,不但各大軟件公司推出了不少ActiveX 控件,ActiveX控件更是得到一般開發者的喜愛。那么,什么是ActiveX控件呢?ActiveX控件是一個動態鏈接庫,是作為基于COM服務器進行操作的,并且可以嵌入在包容器宿主應用程序中,ActiveX控件的前身就是OLE控件。由于ActiveX控件與開發平臺無關,因此,在一種編程語言上開發的ActiveX控件可以無須任何修改,即可在另一種編程語言中使用,其效果如同使用Windows通用控件一樣。如:在VC++中開發的ActiveX控件,不作任何修改即可應用于VB中。由此可見,通過使用ActiveX控件即可實現快速小型的組件重用、實現代碼共享,從而提高編程效率。從上面亦可看出為何ActiveX控件如此廣泛地受到開發者的歡迎。

   因為ActiveX控件的可重用性,加上Inte.net的普及,ActiveX控件得到了極大的發展,目前,從Internet上可以得到相當多的ActiveX控件,而且品種繁多,所完成的任務幾乎無所不包。對普通開發者來說,只要有耐心,都能從Internet上找到符合自己要求的ActiveX控件。

   從Internet下載的ActiveX控件,或從其他途徑得到的ActiveX控件,用戶應該怎樣做才能正確使用ActiveX控件或將其應用于自己的程序中呢?一般來說,一個外來ActiveX控件要在Windows中被正確使用,首先必須將控件文件(*.OCX)復制到硬盤中,然后將其在Windows中注冊,未在Windows中注冊過的ActiveX控件是不能使用的。注冊ActiveX控件一般來說有三種途徑:

   1. 使用Regsvr32.exe程序對ActiveX控件進行注冊;

   2. 使用安裝程序制作軟件:InstallShield;

   3. 在應用程序中加入注冊代碼。

   上述方法適用范圍不同,各有各的優點,下面分別討論。

   一、 使用Regsvr32.exe程序對ActiveX控件進行注冊

   對于未注冊過的ActiveX控件可使用此軟件對其進行注冊,外來ActiveX控件要應用到自己的程序中也必須進行注冊。該文件位于Windows目錄的system子目錄下。使用方法如下:點擊“開始”→“運行”;在運行對話框中輸入以下命令:

regsvr32  < 文件名 >        注冊一個ActiveX控件
regsvr32  /u  < 文件名 >    解除某ActiveX控件的注冊
   我們使用一些帶ActiveX控件的應用程序時,有時會出現不能運行的情況,這有可能是其自帶ActiveX控件未注冊所至,這時不妨使用上述命令一試。另外,VC++使用者若對regsvr32.exe的編碼感興趣的話,可在VC++的聯機幫助中找到其源代碼。若使用VC++ 6.0,則在MSDN光盤的\sample\VC98\MFC\controls\regsvr中。
   二、 使用安裝程序制作軟件:InstallShield

   使用regsvr32.exe來注冊ActiveX控件雖然簡單,但需要用戶手工注冊,在不用時還得手工解除注冊,因此,這對一個應用程序來說并非好的解決方案。大型應用軟件一般都有一個安裝程序,在安裝程序中解決ActiveX控件注冊是較為理想的一種方案。使用InstallShield可以制作出專業級的Setup,還可注冊其中的ActiveX控件;而且,在以后攜載軟件時,自動注銷掉以前注冊的ActiveX控件。方法如下:

   1. 啟動InstallShield,使用Project Wizard建立一個新的項目;

   2. 新建一個“File Group”,將需要注冊的ActiveX控件文件放入此“File Group”中;

   3. 將上述“File Group”的“Self-Registered”屬性設置成“Yes”。

   上述步驟僅為制作Setup中設置自動注冊ActiveX控件幾步,至于使用InstallShield怎樣制作一個完整的Setup不在本文討論范圍之中,請讀者自己參看有關書籍。

   三、 在應用程序中加入注冊代碼

   對于小型程序不宜采取第二種方法,較好的方法是在程序中嵌入注冊代碼,實現應用程序自注冊。其編程方法是:

   1. 使用Windows API函數LoadLibrary載入ActiveX控件;

   2. 使用GetProcAddress函數獲取ActiveX控件中注冊函數DllRegisterServer(注銷函數為DllUnregisterServer)指針;

   3. 調用注冊函數DllRegisterServer(或注銷函數DllUnregisterServer)。

   下面以VC++ 6.0編寫的RegActivex程序為例,介紹怎樣在程序中自動注冊(注銷)ActiveX控件。RegActivex的主體框架由VC++ 6.0的AppWizard自動產生,在其基礎上增加兩個菜單項:“注冊ActiveX控件”、“注銷ActiveX控件”。當選擇“注冊ActiveX控件”菜單時,將對控件toweratl.ocx(一個漢諾游戲)進行注冊;當選擇“注銷ActiveX控件”菜單時,將解除控件toweratl.ocx的注冊。

   1. 使用VC++ 6.0建立一個單文檔的應用程序RegActivex,其他項目接受默認設置;

   2. 給應用程序增加兩個菜單項:“注冊ActiveX控件”、“注銷ActiveX控件”,步驟如下:

   ① 單擊VC++ 6.0左邊窗口的“ResoureView”,雙擊MENU項目下的IDR_MAINFRAME以打開菜單編輯器;

   ② 在菜單編輯器中,加入一個主菜單“注冊”,在“注冊”主菜單下加入兩個菜單項:“注冊ActiveX控件”、“注銷ActiveX控件”;

   3. 給新建的菜單項 “注冊ActiveX控件” 和“注銷ActiveX控件”增加響應函數:

   ① 在資源編輯其中,雙擊MENU中的IDR_MAINFRAME打開菜單編輯器,單擊“注冊ActiveX控件”,按Ctrl+W打開MFC Class Wizard;

   ② 雙擊Messages框中的COMMAND,給“注冊ActiveX控件”菜單項增加響應函數OnRegisterReg(),單擊右邊“Edit”按鈕給OnRegisterReg()函數增加如下代碼:

void CMainFrame::OnRegisterReg()
  {
  //ActiveX控件的路徑及文件名
  LPCTSTR pszDllName="toweratl.ocx";
        //裝載ActiveX控件
  HINSTANCE hLib = LoadLibrary(pszDllName);
        if (hLib < (HINSTANCE)HINSTANCE_ERROR)
        {
                MessageBox("不能載入Dll文件!","結果",MB_OK);
                return;
        }
  //獲取注冊函數DllRegisterServer地址
        FARPROC lpDllEntryPoint;
        lpDllEntryPoint = GetProcAddress
(hLib,_T("DllRegisterServer"));
        //調用注冊函數DllRegisterServer
if(lpDllEntryPoint!=NULL)
        {
                if(FAILED((*lpDllEntryPoint)()))
                {
MessageBox("調用DllRegisterServer
失??!","結果",MB_OK);
FreeLibrary(hLib);
return;
                };
MessageBox("注冊成功","結果",MB_OK);
        }
        else
MessageBox("調用DllRegisterServer失??!"
,"結果",MB_OK);
}
   ③ “注銷ActiveX控件”菜單項響應函數的編寫方法同上,代碼也相似,只是將
“lpDllEntryPoint=GetProcAddress
(hLib,_T("DllRegisterServer"));”改成:
        lpDllEntryPoint = GetProcAddress
(hLib,_T("DllUnregisterServer"))。
   4. 編譯聯接上述程序,即可得一個可執行文件。另需注意的是:應將ActiveX控件文件toweratl.ocx復制到Windows的system目錄下??丶募oweratl.ocx在微軟出版的《Visual C++ 6.0程序員指南》所附光盤中可以找到。
   5. 測試上述程序:運行《Visual C++ 6.0程序員指南》所附光盤中的game2程序,若使用RegActivex注冊了toweratl.ocx控件,則該程序可以正常運行;若使用RegActivex注銷了toweratl.ocx控件則game2不能運行。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97