在代码里注册COM组件,相对于regsvr32有自己的优点,可控,隐蔽性好。这里将msdn的示例修改了下:
需要注意的有两点:
- Ole环境的初始化和释放;
- GetProcAddress中的函数名称,这里需要取得函数地址,所以函数名大小写...不能写成DllUnRegisterServer

HRESULT hr = OleInitialize(NULL);
<span style="white-space:pre"> </span><pre name="code" class="html"><span style="white-space:pre"> </span>int iError; HINSTANCE hLib = LoadLibrary(_T("XXX.dll"));if (hLib < (HINSTANCE)HINSTANCE_ERROR){iError = GetlastError();
<span style="white-space:pre"> </span>return iError<span style="font-family: Arial, Helvetica, sans-serif;">;</span>
}
// 注册
FARPROC lpDllEntryPoint = GetProcAddress(hLib,"DllRegisterServer");
FARPROC lpDllEntryPoint = GetProcAddress(hLib,"DllUnregisterServer");
if (lpDllEntryPoint != NULL)
(*lpDllEntryPoint)();
else
<span style="font-family: Arial, Helvetica, sans-serif;">{</span><pre name="code" class="html"> iError = GetlastError();<span> </span>return iError<span style="font-family: Arial, Helvetica, sans-serif;">;</span>
} ::FreeLibrary(hLib);OleUninitialize();
913



被折叠的 条评论
为什么被折叠?



