日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ActiveX控件注册的几种方法

發(fā)布時(shí)間:2023/12/14 编程问答 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ActiveX控件注册的几种方法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • ActiveX控件是一個(gè)動(dòng) 態(tài)鏈接庫(kù),是作為基于COM服務(wù)器進(jìn)行操作的,并且可以嵌入在包容器宿主應(yīng)用程序中,ActiveX控件的前身就是OLE控件。由于ActiveX控件與 開(kāi)發(fā)平臺(tái)無(wú)關(guān),因此,在一種編程語(yǔ)言上開(kāi)發(fā)的ActiveX控件可以無(wú)須作任何修改,即可在另一種編程語(yǔ)言中使用,其效果如同使用Windows通用控件 一樣。如:在VC++中開(kāi)發(fā)的ActiveX控件,不作任何修改即可應(yīng)用于VB中。由此可見(jiàn),通過(guò)使用ActiveX控件即可實(shí)現(xiàn)快速小型的組件重用、代 碼共享,從而提高編程效率。

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

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

  • 對(duì)于未注冊(cè)過(guò)的ActiveX控件可使用此軟件對(duì)其進(jìn)行注冊(cè),外來(lái)ActiveX控件要應(yīng)用到自己的程序中也必須進(jìn)行注冊(cè)。該文件位于Windows目錄的system子目錄下。使用方法如下:點(diǎn)擊“開(kāi)始”→“運(yùn)行”;在運(yùn)行對(duì)話框中輸入以下命令:
    regsvr32 /s <文件名> 注冊(cè)一個(gè)ActiveX控件且不管注冊(cè)成功與否,均不顯示提示框
    regsvr32 /u <文件名> 解除某ActiveX控件的注冊(cè)

  • 我們使用一些帶ActiveX控件的應(yīng)用程序時(shí),有時(shí)會(huì)出現(xiàn)不能運(yùn)行的情況,這有可能是其自帶ActiveX控件未注冊(cè)所至,這時(shí)不妨使用上述命令一試。

二、使用安裝程序注冊(cè)

  • 使用regsvr32.exe來(lái)注冊(cè)ActiveX控件雖然簡(jiǎn)單,但需要用戶手工注冊(cè),在不用時(shí)還得手工解除注冊(cè),因此,這對(duì)一個(gè)應(yīng)用程序來(lái)說(shuō)并非好的解決方案。大型應(yīng)用軟件一般都有一個(gè)安裝程序,在安裝程序中解決ActiveX控件注冊(cè)是較為理想的一種方案。使用InstallShield可以制作出專業(yè)級(jí)的Setup,還可注冊(cè)其中的ActiveX控件;而且,在以后攜載軟件時(shí),自動(dòng)注銷掉以前注冊(cè)的ActiveX控件。方法如下:
    啟動(dòng)InstallShield,使用ProjectWizard建立一個(gè)新的項(xiàng)目;
    新建一個(gè)“FileGroup”,將需要注冊(cè)的ActiveX控件文件放入此“FileGroup”中;
    將上述“FileGroup”的“Self-Registered”屬性設(shè)置成“Yes”。

  • 在NSIS中有命令可以注冊(cè)DLL、OCX等文件,代碼如:

regdll "$instdir\xxx.dll" unregdll "$instdir\xxx.dll" (反注冊(cè))

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

  • 對(duì)于小型程序不宜采取第二種方法,較好的方法是在程序中嵌入注冊(cè)代碼,實(shí)現(xiàn)應(yīng)用程序自注冊(cè)。其編程方法是:
    使用WindowsAPI函數(shù)LoadLibrary載入ActiveX控件;
    使用GetProcAddress函數(shù)獲取ActiveX控件中注冊(cè)函數(shù)DllRegisterServer(注銷函數(shù)為DllUnregisterServer)指針;
    調(diào)用注冊(cè)函數(shù)DllRegisterServer(或注銷函數(shù)DllUnregisterServer)。
BOOL RegisterOCX(LPCTSTR OcxFileName) {LPCTSTR pszDllName = OcxFileName ; //ActiveX控件的路徑及文件名HINSTANCE hLib = LoadLibrary(pszDllName); //裝載ActiveX控件if (hLib < (HINSTANCE)HINSTANCE_ERROR){return FALSE ;}FARPROC lpDllEntryPoint;lpDllEntryPoint = GetProcAddress(hLib,("DllRegisterServer")); //獲取注冊(cè)函數(shù)DllRegisterServer地址if(lpDllEntryPoint!=NULL) //調(diào)用注冊(cè)函數(shù)DllRegisterServer{if(FAILED((*lpDllEntryPoint)())){DWORD dwError = GetLastError();FreeLibrary(hLib);return FALSE ;}return TRUE ;}elsereturn FALSE ; }

總結(jié)

以上是生活随笔為你收集整理的ActiveX控件注册的几种方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。