欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
VB運行時(shí)動(dòng)態(tài)注冊添加控件的方法


  1. //=========================================================================  
  2. // 動(dòng)態(tài)注冊 ActiveX 控件 LPCTSTR = const char *  
  3. //=========================================================================  
  4. BOOL __stdcall pfyRegControl(LPCTSTR lpFileName)  
  5. {   LPCTSTR lpDllName = lpFileName;             //ActiveX控件的路徑及文件名  
  6.     HINSTANCE hLib = LoadLibrary(lpDllName);    //裝載ActiveX控件  
  7.     if (hLib < (HINSTANCE)HINSTANCE_ERROR)  
  8.     {   return FALSE;  
  9.     }  
  10.     FARPROC lpDllEntryPoint;  
  11.     lpDllEntryPoint = GetProcAddress(hLib, lpfnRegister);   //獲取注冊函數DllRegisterServer地址   
  12.     if(lpDllEntryPoint != NULL)                 //調用注冊函數DllRegisterServer   
  13.     {   if(FAILED((*lpDllEntryPoint)()))  
  14.         {   FreeLibrary(hLib);   
  15.             return FALSE;   
  16.         }  
  17.         return TRUE;  
  18.     }else  
  19.     return FALSE;   
  20. }   
  21.   
  22. //=========================================================================  
  23. // 動(dòng)態(tài)卸載 ActiveX 控件  
  24. //=========================================================================  
  25. BOOL __stdcall pfyUnRegControl(LPCTSTR lpFileName)   
  26. {   LPCTSTR lpDllName = lpFileName;             //ActiveX控件的路徑及文件名  
  27.     HINSTANCE hLib = LoadLibrary(lpDllName);    //裝載ActiveX控件  
  28.     if (hLib < (HINSTANCE)HINSTANCE_ERROR)  
  29.     {   return FALSE;  
  30.     }  
  31.     FARPROC lpDllEntryPoint;     
  32.     lpDllEntryPoint = GetProcAddress(hLib, lpfnUnReg);  //獲取注冊函數DllUnregisterServer地址  
  33.     if(lpDllEntryPoint != NULL)                 //調用注冊函數DllUnregisterServer  
  34.     {   if(FAILED((*lpDllEntryPoint)()))   
  35.         {   FreeLibrary(hLib);  
  36.             return FALSE;   
  37.         }  
  38.         return TRUE;   
  39.     }else  
  40.     return FALSE;   
  41. }  


對于VB只要用API聲明這兩個(gè)函數即可,按一樣的方法調用,當然最簡(jiǎn)單的是Shell "cmd /c regsvr32 /q abc.dll"之類(lèi)的命令行

這些也是可以的,重復注冊不會(huì )造成破壞,只是感覺(jué)不爽,因此下面提供一種感覺(jué)更舒服的方法

  1. Public Sub Main()   '注意工程的入口函數必須是Sub Main,如果是某個(gè)窗體,這個(gè)窗體包含未注冊的控件則直接出錯  
  2.     Dim strCom As String  
  3.     'frmMain.Controls.Add "MSComctlLib.TreeView", "tv"  '從報錯得到progid=MSComctlLib.TreeCtrl.2  
  4.     If pfyCheckClass(StrConv("MSComctlLib.TreeCtrl.2", vbUnicode)) = 0 Then  
  5.         '類(lèi)未注冊  
  6.         strCom = Environ("Windir") & "\mscomctl.ocx"  
  7.         If Dir(strCom) = "" Then strCom = Environ("Windir") & "\system32\mscomctl.ocx"  
  8.         '不再用Dir函數  
  9.         If FileLen(strCom) = 0 Then    '系統沒(méi)有該文件  
  10.             If Dir(App.Path & "\mscomctl.ocx") = "" Then  
  11.                 MsgBox "缺少組件!程序運行需要如下微軟組件:" & vbCrLf & "mscomctl.ocx", vbCritical, "#Error"  
  12.                 End  
  13.             End If  
  14.         Else  
  15.             FileCopy App.Path & "\mscomctl.ocx", strCom  
  16.         End If  
  17.         If pfyRegControl("mscomctl.ocx") = 0 Then  
  18.             MsgBox "控件: mscomctl.ocx  注冊失??!請手動(dòng)注冊該組件!", vbExclamation, "#Error"  
  19.             Open App.Path & "\reg.bat" For Output As #1  
  20.                 Print #1, "rem ======================================"  
  21.                 Print #1, "rem 游俠組件注冊批處理,請雙擊運行……"  
  22.                 Print #1, "rem 游俠技術(shù) http://blog.csdn.net/prsniper"  
  23.                 Print #1, "rem ======================================"  
  24.                 Print #1, "regsvr32 mscomctl.ocx"  
  25.                 Print #1, "pause"  
  26.             Close #1  
  27.             End  
  28.         End If  
  29.     End If  

上面的pfyCheckClass是我封裝的根據類(lèi)名檢查某個(gè)控件是否注冊的函數,其C/C++的源碼如下:

  1. //===============================================================  
  2. // ActiveX控件類(lèi)注冊狀態(tài)判斷  
  3. //===============================================================  
  4. INSERT_API BOOL __stdcall pfyCheckClass(const USHORT *lpClass)  
  5. {   //S_OK 類(lèi)標志符檢索成功   CO_E_CLASSSTRING 類(lèi)標志符無(wú)效   REGDB_E_WRITEREGDB 寫(xiě)入標志符到注冊表出錯  
  6.     HRESULT hr;  
  7.     CLSID clsId;  
  8.     hr = CLSIDFromProgID(lpClass, &clsId);  
  9.     if(hr == S_OK) return TRUE;  
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
ActiveX 控件注冊的幾種方法
VC++注冊,卸載OCX控件,以及判斷是否注冊
vc如何動(dòng)態(tài)注冊控件
◆VB6不能加載MSCOMCTL.OCX的解決辦法,好用
系統錯誤&H80040111(-2147221231)。ClassFactory無(wú)法供應請求的類(lèi)別
網(wǎng)易博客歡迎您
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久