OCX控件注册相关(检查是否注册,注册,反注册)
1
BOOL 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
26
BOOL 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
51
bool 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
83
bool 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
BOOL 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) //调用注册函数DllRegisterServer13
{ 14
if(FAILED((*lpDllEntryPoint)())) 15
{ 16
FreeLibrary(hLib); 17
return FALSE ; 18
} 19
return TRUE ; 20
} 21
else 22
return FALSE ; 23
} 24

25

26
BOOL 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

51
bool 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

83
bool 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




浙公网安备 33010602011771号