admin管理员组

文章数量:1531332

2024年1月5日发(作者:)

54 NULL, CLSCTX_INPROC_SERVER, IID_ICatRegister, (void**)&pcr); 55 if (FAILED(hr)) 56 return hr;

57

58 // Make sure the HKCRComponent Categories{..} 59 // key is registered. 60 CATEGORYINFO catinfo; 61 = catid; 62 = 0x0409 ; // english

63

64 // Make sure the provided description is not too long. 65 // Only copy the first 127 characters if it is. 66 int len = wcslen(catDescription); 67 if (len>127) 68 len = 127; 69 wcsncpy_s(ription, catDescription, len); 70 // Make sure the description is null terminated. 71 ription[len] = '0';

72

73 hr = pcr->RegisterCategories(1, &catinfo); 74 pcr->Release();

75

76 return hr; 77 }

78

79 // 注册组件种类 80 HRESULT RegisterCLSIDInCategory(REFCLSID clsid, CATID catid) 81 { 82 // Register your component categories information. 83 ICatRegister* pcr = NULL ; 84 HRESULT hr = S_OK ; 85 hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr,

86 NULL, CLSCTX_INPROC_SERVER, IID_ICatRegister, (void**)&pcr); 87 if (SUCCEEDED(hr)) 88 { 89 // Register this category as being "implemented" by the class. 90 CATID rgcatid[1] ; 91 rgcatid[0] = catid; 92 hr = pcr->RegisterClassImplCategories(clsid, 1, rgcatid); 93 } 94 if (pcr != NULL) 95 pcr->Release(); 96 return hr; 97 } 98

99 // 卸载组件种类100 HRESULT UnRegisterCLSIDInCategory(REFCLSID clsid, CATID catid)101 {102 ICatRegister* pcr = NULL ;103 HRESULT hr = S_OK ;

104

105 hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr,

106 NULL, CLSCTX_INPROC_SERVER, IID_ICatRegister, (void**)&pcr);107 if (SUCCEEDED(hr))108 {109 // Unregister this category as being "implemented" by the class.110 CATID rgcatid[1] ;111 rgcatid[0] = catid;112 hr = pcr->UnRegisterClassImplCategories(clsid, 1, rgcatid);113 }

114

115 if (pcr != NULL)116 pcr->Release();

117

118 return hr;119 }120

121 // DllRegisterServer - Adds entries to the system registry122

123 STDAPI DllRegisterServer(void)124 {125 AFX_MANAGE_STATE(_afxModuleAddrThis);126

127 if (!AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid))128 return ResultFromScode(SELFREG_E_TYPELIB);129

130 if (!COleObjectFactoryEx::UpdateRegistryAll(TRUE))131 return ResultFromScode(SELFREG_E_CLASS);132

133 // 标记控件初始化安全.134 // 创建初始化安全组件种类135 HRESULT hr = CreateComponentCategory(CATID_SafeForInitializing,136 L"Controls safely initializable from persistent data!");137 if (FAILED(hr))

138 return hr;139 // 注册初始化安全140 hr = RegisterCLSIDInCategory(CLSID_SafeItem, CATID_SafeForInitializing);141 if (FAILED(hr))142 return hr;

143

144 // 标记控件脚本安全145 // 创建脚本安全组件种类

146 hr = CreateComponentCategory(CATID_SafeForScripting, L"Controls safely scriptable!");147 if (FAILED(hr))148 return hr;149 // 注册脚本安全组件种类150 hr = RegisterCLSIDInCategory(CLSID_SafeItem, CATID_SafeForScripting);151 if (FAILED(hr))152 return hr;

153

154 return NOERROR;155 }156

157

158

159 // DllUnregisterServer - Removes entries from the system registry160

161 STDAPI DllUnregisterServer(void)162 {163 AFX_MANAGE_STATE(_afxModuleAddrThis);164

165 if (!AfxOleUnregisterTypeLib(_tlid, _wVerMajor, _wVerMinor))166 return ResultFromScode(SELFREG_E_TYPELIB);167

168 if (!COleObjectFactoryEx::UpdateRegistryAll(FALSE))169 return ResultFromScode(SELFREG_E_CLASS);170

171 return NOERROR;172 }

本文标签: 组件种类不到