一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

ActiveX 控件注冊(cè)的幾種方法

 浮 生 2008-11-24

  ActiveX 控件是一個(gè)動(dòng)態(tài)鏈接庫,是作為基于COM 服務(wù)器進(jìn)行操作的,并且可以嵌入在包容器宿主應(yīng)用程序中,ActiveX 控件的前身就是OLE 控件。由于ActiveX 控件與開發(fā)平臺(tái)無關(guān),因此,在一種編程語言上開發(fā)的ActiveX 控件可以無須作任何修改,即可在另一種編程語言中使用,其效果如同使用Windows 通用控件一樣。如:在VC ++中開發(fā)的ActiveX 控件,不作任何修改即可應(yīng)用于VB 中。由此可見,通過使用ActiveX 控件即可實(shí)現(xiàn)快速小型的組件重用、代碼共享,從而提高編程效率。

  從Internet 下載的ActiveX 控件,或從其他途徑得到的ActiveX 控件,用戶應(yīng)該怎樣做才能正確使用呢?一般來說,一個(gè)外來ActiveX 控件要在Windows 中被正確使用,首先必須將控件文件( *.OCX) 復(fù)制到硬盤中,然后將其在Windows 中注冊(cè),未在Windows 中注冊(cè)過的ActiveX 控件是不能使用的。注冊(cè)ActiveX 控件一般來說有三種途徑,適用范圍不同,各有各的優(yōu)點(diǎn),下面分別討論。

  一、使用Regsvr32.exe 程序?qū)ctiveX 控件進(jìn)行注冊(cè)

  對(duì)于未注冊(cè)過的ActiveX 控件可使用此軟件對(duì)其進(jìn)行注冊(cè),外來ActiveX 控件要應(yīng)用到自己的程序中也必須進(jìn)行注冊(cè)。該文件位于Windows 目錄的system 子目錄下。使用方法如下:點(diǎn)擊“開始”→“運(yùn)行”;在運(yùn)行對(duì)話框中輸入以下命令:
regsvr32 < 文件名>  注冊(cè)一個(gè)ActiveX 控件
regsvr32 /u< 文件名> 解除某ActiveX 控件的注冊(cè)
  我們使用一些帶ActiveX 控件的應(yīng)用程序時(shí),有時(shí)會(huì)出現(xiàn)不能運(yùn)行的情況,這有可能是其自帶ActiveX 控件未注冊(cè)所至,這時(shí)不妨使用上述命令一試。另外,VC ++使用者若對(duì)regsvr32.exe 的編碼感興趣的話,可在VC ++的聯(lián)機(jī)幫助中找到其源代碼。若使用VC ++6.0,則在MSDN 光盤的\sample\VC98\MFC\controls\regsvr 中。

  二、使用安裝程序

制作軟件:InstallShield

  使用regsvr32.exe 來注冊(cè)ActiveX 控件雖然簡(jiǎn)單,但需要用戶手工注冊(cè),在不用時(shí)還得手工解除注冊(cè),因此,這對(duì)一個(gè)應(yīng)用程序來說并非好的解決方案。大型應(yīng)用軟件一般都有一個(gè)安裝程序,在安裝程序中解決ActiveX 控件注冊(cè)是較為理想的一種方案。使用InstallShield 可以制作出專業(yè)級(jí)的Setup,還可注冊(cè)其中的ActiveX 控件;而且,在以后攜載軟件時(shí),自動(dòng)注銷掉以前注冊(cè)的ActiveX 控件。方法如下:
啟動(dòng)InstallShield,使用Project Wizard 建立一個(gè)新的項(xiàng)目;
新建一個(gè)“File Group",將需要注冊(cè)的ActiveX 控件文件放入此“File Group"中;
將上述“File Group"的“Self -Registered"屬性設(shè)置成“Yes"。
  上述步驟僅為制作Setup 中設(shè)置自動(dòng)注冊(cè)ActiveX 控件幾步,至于使用InstallShield 怎樣制作一個(gè)完整的Setup 不在本文討論范圍之中, 請(qǐng)讀者自己參看有關(guān)書籍。

  三、在應(yīng)用程序中加入注冊(cè)代碼

  對(duì)于小型程序不宜采取第二種方法,較好的方法是在程序中嵌入注冊(cè)代碼,實(shí)現(xiàn)應(yīng)用程序自注冊(cè)。其編程方法是:

  1、使用Windows API 函數(shù)LoadLibrary 載入ActiveX 控件;
  2、使用GetProcAddress 函數(shù)獲取ActiveX 控件中注冊(cè)函數(shù)DllRegisterServer (注銷函數(shù)為DllUnregisterServer)指針;
  3、調(diào)用注冊(cè)函數(shù)DllRegisterServer(或注銷函數(shù)DllUnregisterServer)。

  下面以VC ++6.0 編寫的RegActivex 程序?yàn)槔榻B怎樣在程序中自動(dòng)注冊(cè)(注銷)ActiveX 控件。RegActivex 的主體框架由VC ++6.0 的AppWizard 自動(dòng)產(chǎn)生,在其基礎(chǔ)上增加兩個(gè)菜單項(xiàng):“注冊(cè)ActiveX 控件”、“注銷ActiveX 控件”。當(dāng)選擇“注冊(cè)ActiveX 控件”菜單時(shí),將對(duì)控件toweratl.ocx(一個(gè)漢諾游戲)進(jìn)行注冊(cè);當(dāng)選擇“注銷ActiveX 控件”菜單時(shí),將解除控件toweratl.ocx 的注冊(cè)。

  1、使用VC ++6.0 建立一個(gè)單文檔的應(yīng)用程序RegActivex,其他項(xiàng)目接受默認(rèn)設(shè)置;
  2、給應(yīng)用程序增加兩個(gè)菜單項(xiàng):“注冊(cè)ActiveX 控件”、“注銷ActiveX 控件”,步驟如下:
  a、單擊VC ++6.0 左邊窗口的“ResoureView",雙擊MENU 項(xiàng)目下的IDR_MAINFRAME 以打開菜單編輯器;
  b、在菜單編輯器中,加入一個(gè)主菜單“注冊(cè)”,在“注冊(cè)”主菜單下加入兩個(gè)菜單項(xiàng):“注冊(cè)ActiveX 控件”、“注銷ActiveX 控件”;
  3、給新建的菜單項(xiàng)“注冊(cè)ActiveX 控件”和“注銷ActiveX 控件”增加響應(yīng)函數(shù):
  b、在資源編輯器中,雙擊MENU 中的IDR_MAINFRAME 打開菜單編輯器,單擊“注冊(cè)ActiveX 控件”, 按Ctrl +W 打開MFC Class Wizard;
  c、雙擊Messages 框中的COMMAND, 給“注冊(cè)ActiveX 控件”菜單項(xiàng)增加響應(yīng)函數(shù)OnRegisterReg(), 單擊右邊“Edit"按鈕, 給OnRegisterReg() 函數(shù)增加如下代碼:
void CMainFrame::OnRegisterReg()
 {
 //ActiveX 控件的路徑及文件名
 LPCTSTR pszDllName="toweratl.ocx";
  // 裝載ActiveX 控件
 HINSTANCE hLib = LoadLibrary(pszDllName);
  if (hLib < (HINSTANCE)HINSTANCE_ERROR)
  {
 MessageBox("不能載入Dll 文件!",
"結(jié)果",MB_OK);
 return;
 }
 // 獲取注冊(cè)函數(shù)DllRegisterServer 地址
   FARPROC lpDllEntryPoint;
   lpDllEntryPoint = GetProcAddress
   (hLib,_T("DllRegisterServer"));
   // 調(diào)用注冊(cè)函數(shù)DllRegisterServer
if(lpDllEntryPoint!=NULL)
   {
   if(FAILED(( *lpDllEntryPoint)()))
   {
   MessageBox("調(diào)用DllRegisterServer 失??!",
         "結(jié)果",MB_OK);
   FreeLibrary(hLib);
   return;
   };
   MessageBox("注冊(cè)成功","結(jié)果",MB_OK);
   }
   else
   MessageBox("調(diào)用DllRegisterServer 失??!",
         "結(jié)果",MB_OK);
}

  c、"注銷ActiveX 控件”菜單項(xiàng)響應(yīng)函數(shù)的編寫方法同上,代碼也相似,只是將“l(fā)pDllEntryPoint=GetProcAddress(hLib,_T("DllRegisterServer"));"改成:
 lpDllEntryPoint = GetProcAddress(hLib,_T
("DllUnregisterServer"))。
  4、編譯聯(lián)接上述程序,即可得一個(gè)可執(zhí)行文件。另需注意的是:應(yīng)將ActiveX 控件文件toweratl.ocx 復(fù)制到Windows 的system 目錄下。控件文件toweratl.ocx 在微軟出版的《Visual C ++6.0 程序員指南》所附光盤中可以找到。
  5、測(cè)試上述程序:運(yùn)行《Visual C ++6.0 程序員指南》所附光盤中的game2 程序,若使用RegActivex 注冊(cè)了toweratl.ocx 控件,則該程序可以正常運(yùn)行;若使用RegActivex 注銷了toweratl.ocx 控件則game2 不能運(yùn)行。  



    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    男人和女人黄 色大片| 欧美成人免费夜夜黄啪啪| 91人妻人澡人人爽人人精品| 国产亚洲精品一二三区| 一区二区三区四区亚洲专区| 99久久精品视频一区二区| 香蕉尹人视频在线精品| 亚洲国产成人久久99精品| 狠狠干狠狠操亚洲综合| 东京热男人的天堂久久综合| 日韩美成人免费在线视频| 久久香蕉综合网精品视频 | 天堂热东京热男人天堂| 五月婷婷欧美中文字幕| 欧美人妻一区二区三区| 久草热视频这里只有精品| 大尺度剧情国产在线视频| 日本女优一色一伦一区二区三区| 日韩欧美国产亚洲一区| 国产男女激情在线视频| 欧美精品亚洲精品日韩精品| 国产又色又爽又黄的精品视频| 国产人妻精品区一区二区三区| 开心五月激情综合婷婷色| 国产水滴盗摄一区二区| 国产成人精品一区二三区在线观看| 国产欧美日韩精品自拍| 国产精品久久熟女吞精| 日韩在线一区中文字幕| av在线免费播放一区二区| 日本视频在线观看不卡| 欧美中文日韩一区久久| 国产一级二级三级观看| 爱在午夜降临前在线观看| 亚洲中文字幕在线综合视频| 欧洲偷拍视频中文字幕| 好吊色免费在线观看视频| 日本成人中文字幕一区| 99精品人妻少妇一区二区人人妻 | 福利视频一区二区在线| 日本人妻熟女一区二区三区 |