Ejemplo n.º 1
0
HRESULT RegisterComponentCategory(REFGUID catid, LPCOLESTR pszDesc)
{
  ICatRegisterPtr pcr;
  HRESULT hr = pcr.CreateInstance(__uuidof(StdComponentCategoriesMgr));
  if (FAILED(hr))
  {
    // Since not all systems have the category manager installed, we'll allow
    // the registration to succeed even though we didn't register our
    // categories.  If you really want to register categories on a system
    // without the category manager, you can either manually add the
    // appropriate entries to your registry script (.rgs), or you can
    // redistribute comcat.dll.
    return S_OK;
  }

  // Determine the LCID for US English
  const LANGID langid = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US);
  const LCID lcid = MAKELCID(langid, SORT_DEFAULT);

  // Register the component category
  CATEGORYINFO catinfo;
  catinfo.catid = catid;
  catinfo.lcid = lcid;
  wcscpy(catinfo.szDescription, pszDesc);
  return pcr->RegisterCategories(1, &catinfo);
}
Ejemplo n.º 2
0
bool facebook::registerInCategory(const CLSID& classId, 
                                  const CATID& categoryId) {
   CoInitialize(0);


   ICatRegisterPtr categories;

   const HRESULT createResult = categories.CreateInstance(
         CLSID_StdComponentCategoriesMgr);
   
   if (FAILED(createResult)) {
      return false;
   }

   CATID categoryIds[] = {categoryId};
   const HRESULT regResult = categories->RegisterClassImplCategories(classId, 
     1, categoryIds);
   
   if (FAILED(regResult)) {
      return false;
   }

   ScopeGuard coUninitializeGuard(
    boost::bind(CoUninitializeWrapper()));

   return true;
}
Ejemplo n.º 3
0
	HRESULT CAddInRegistrar::Register(CLSID clsid, LCID lcid, LPCTSTR name, LPCTSTR summary, ULONG cEnvironments, CATID environments[])
	{
		HRESULT hr = S_OK;

#pragma region "HKEY_CLASSES_ROOT\CLSID\{ADDIN_GUID}"
		
		LPOLESTR lpClsidString;
		StringFromCLSID(clsid, &lpClsidString);

		CString strKeyCLSID;
		strKeyCLSID.AppendFormat(L"CLSID\\%s", lpClsidString);

		CoTaskMemFree(lpClsidString);

		CString strValueName;
		strValueName.AppendFormat(L"%x", lcid);

		CRegKey key;

		// Create\Open the key.
		LONG result = key.Create(HKEY_CLASSES_ROOT, strKeyCLSID);

		if (result == ERROR_SUCCESS)
		{
			// Set the localized addin name.
			key.SetStringValue(strValueName, name);
			key.Close();
		}

#pragma endregion

#pragma region "HKEY_CLASSES_ROOT\CLSID\{ADDIN_GUID}\Summary"

		CString strKeySummary;
		strKeySummary = strKeyCLSID;
		strKeySummary.Append(L"\\Summary");

		result = key.Create(HKEY_CLASSES_ROOT, strKeySummary);

		if (result == ERROR_SUCCESS)
		{
			key.SetStringValue(strValueName, summary);
			key.Close();
		}

#pragma endregion

#pragma region "HKEY_CLASSES_ROOT\CLSID\{ADDIN_GUID}\Environment Categories"

		CString strKeyEnvironmentCategories;
		strKeyEnvironmentCategories = strKeyCLSID;
		strKeyEnvironmentCategories.Append(L"\\Environment Categories");

		result = key.Create(HKEY_CLASSES_ROOT, strKeyEnvironmentCategories);

		if (result == ERROR_SUCCESS)
		{
			for (ULONG i = 0; i < cEnvironments; i++ )
			{
				LPOLESTR lpCatidString = NULL;
				StringFromCLSID( environments[i], &lpCatidString );

				CString strEnvCATID(lpCatidString);
				CRegKey keyEnvironment;
				keyEnvironment.Create(key, strEnvCATID);

				CoTaskMemFree(lpCatidString);
			}

			key.Close();
		}

#pragma endregion

#pragma region "HKEY_CLASSES_ROOT\CLSID\{ADDIN_GUID}\Implemented Categories"
		
		ICatRegisterPtr pCatRegister;
		IfFailGoCheck(pCatRegister.CreateInstance(CLSID_StdComponentCategoriesMgr), pCatRegister);

		CATID implementedCategories[] = { CATID_SolidEdgeAddIn };
		IfFailGo(pCatRegister->RegisterClassImplCategories(clsid, _countof(implementedCategories), implementedCategories));

#pragma endregion

Error:
		pCatRegister = NULL;
		return hr;
	}