예제 #1
0
void registerAppInfo(HINSTANCE hInstance)
{
    HINSTANCE hPrevInst = AfxGetResourceHandle();
    AfxSetResourceHandle(hInstance);
	USES_CONVERSION;
	HRESULT hRes = S_OK;
	CComPtr<IRegistrar> p;
    hRes = CoCreateInstance(CLSID_Registrar, NULL,
                            CLSCTX_INPROC_SERVER, IID_IRegistrar, (void**)&p);
	if (SUCCEEDED (hRes)) {
        TCHAR szRegKey [MAX_PATH];
        CString strAutoCADRegistryPath = acrxProductKey ();
        _tcscpy (szRegKey, strAutoCADRegistryPath);
        const TCHAR *pszDelimiter = "\\";
        TCHAR *pszToken = _tcstok (szRegKey, pszDelimiter);
        const TCHAR *pszIds[] = 
        {
            "SOFTWARE", "AUTODESK", "AUTOCAD", "RELEASE", "AUTH"
        };
        int nCount = 0;
        while (NULL != pszToken) {
            p->AddReplacement (T2OLE(pszIds[nCount]), T2OLE(pszToken));
            pszToken = _tcstok (NULL, pszDelimiter);
            if (NULL == pszToken)
                break;
            nCount++;
        }

        TCHAR szModule [_MAX_PATH];
        GetModuleFileName (hInstance, szModule, MAX_PATH);
        LPOLESTR pszModule = T2OLE (szModule);
        p->AddReplacement (T2OLE("MODULE"), pszModule);
        LPCOLESTR szType = OLESTR ("REGISTRY");

        p->ResourceRegister (pszModule, IDR_REGISTRY_APP, szType);
    }
    AfxSetResourceHandle(hPrevInst);
}