OCX控件注册相关(检查是否注册,注册,反注册)

 

  1BOOL RegisterOcx(LPCTSTR OcxFileName) 
  2
  3 LPCTSTR pszDllName = OcxFileName ; //ActiveX控件的路径及文件名 
  4 HINSTANCE hLib = LoadLibrary(pszDllName); //装载ActiveX控件 
  5 if (hLib < (HINSTANCE)HINSTANCE_ERROR) 
  6 
  7  return FALSE ; 
  8 }
 
  9 FARPROC lpDllEntryPoint; 
 10 lpDllEntryPoint =GetProcAddress(hLib,_T("DllRegisterServer")); //获取注册函数DllRegisterServer地址 
 11
 12 if(lpDllEntryPoint!=NULL) //调用注册函数DllRegisterServer
 13 
 14  if(FAILED((*lpDllEntryPoint)())) 
 15  
 16   FreeLibrary(hLib); 
 17   return FALSE ; 
 18  }
 
 19  return TRUE ; 
 20 }
 
 21 else 
 22  return FALSE ; 
 23}
 
 24
 25
 26BOOL UnRegisterOcx(LPCTSTR OcxFileName)
 27
 28 LPCTSTR pszDllName = OcxFileName ; //ActiveX控件的路径及文件名 
 29 HINSTANCE hLib = LoadLibrary(pszDllName); //装载ActiveX控件 
 30 if (hLib < (HINSTANCE)HINSTANCE_ERROR)  
 31 {  
 32  return FALSE ;  
 33 }
 
 34 FARPROC lpDllEntryPoint; 
 35 lpDllEntryPoint = GetProcAddress(hLib,_T("DllUnregisterServer")); //获取注册函数DllUnregisterServer地址 
 36
 37 if(lpDllEntryPoint!=NULL) //调用注册函数DllUnregisterServer 
 38 {
 39  if(FAILED((*lpDllEntryPoint)())) 
 40  
 41   FreeLibrary(hLib); 
 42   return FALSE ; 
 43  }
 
 44  return TRUE ; 
 45 }
 
 46 else 
 47  return FALSE ; 
 48}
  
 49
 50
 51bool CMsgGathorDlg::IsReg()
 52
 53 HKEY hKey;   
 54 BOOL bPresent;   
 55 TCHAR szPath[_MAX_PATH];   
 56 DWORD dwRegType;   
 57 DWORD cbData = sizeof szPath * sizeof TCHAR; 
 58
 59 hKey = NULL; 
 60 bPresent = FALSE;
 61 ::RegOpenKey(HKEY_CLASSES_ROOT, _T("CLSID\\{4CAD92F0-D7C4-11D0-BCF7-00C04FC2FB86}\\InprocServer32"), &hKey); 
 62 if(hKey) 
 63 
 64  HANDLE hfile; 
 65  
 66  szPath[0= 0
 67  ::RegQueryValueEx(hKey, NULL, NULL, &dwRegType, (LPBYTE)szPath, &cbData); 
 68  ::RegCloseKey(hKey); 
 69  
 70  hfile = ::CreateFile(szPath, 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); 
 71  if(INVALID_HANDLE_VALUE != hfile) 
 72  
 73   bPresent = TRUE; 
 74   ::CloseHandle(hfile); 
 75  }
 
 76 }
 
 77
 78 return bPresent;   
 79}

 80
 81
 82
 83bool CMsgGathorDlg::IsReg()
 84
 85 HKEY hKey;   
 86 BOOL bPresent;   
 87 TCHAR szPath[_MAX_PATH];   
 88 DWORD dwRegType;   
 89 DWORD cbData = sizeof szPath * sizeof TCHAR; 
 90
 91 hKey = NULL; 
 92 bPresent = FALSE;
 93 ::RegOpenKey(HKEY_CLASSES_ROOT, _T("CLSID\\{4CAD92F0-D7C4-11D0-BCF7-00C04FC2FB86}\\InprocServer32"), &hKey); 
 94 if(hKey) 
 95 
 96  HANDLE hfile; 
 97  
 98  szPath[0= 0
 99  ::RegQueryValueEx(hKey, NULL, NULL, &dwRegType, (LPBYTE)szPath, &cbData); 
100  ::RegCloseKey(hKey); 
101  
102  hfile = ::CreateFile(szPath, 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); 
103  if(INVALID_HANDLE_VALUE != hfile) 
104  
105   bPresent = TRUE; 
106   ::CloseHandle(hfile); 
107  }
 
108 }
 
109
110 return bPresent;   
111}

112
posted @ 2007-12-20 16:01  健忘猪  阅读(1053)  评论(0编辑  收藏  举报