1. 程式人生 > >讓程序外COM實現多例項

讓程序外COM實現多例項

目標就是實現每建立一個COM例項,就開啟一個程序。

通過呼叫RegisterClassObjects方法實現。ATL預設的實現中引數設定為REGCLS_MULTIPLEUSE,改為REGCLS_SINGLEUSE就可以了。

HRESULT PreMessageLoop(int /*nShowCmd*/) throw()
{
HRESULT hr = S_OK;
T* pT = static_cast<T*>(this);
pT;


hr = pT->RegisterClassObjects(CLSCTX_LOCAL_SERVER, 
REGCLS_SINGLEUSE/*REGCLS_MULTIPLEUSE*/);
if (hr == S_OK)
{
if (m_bDelayShutdown && !pT->StartMonitor())
{
hr = E_FAIL;
}
}
else
{
m_bDelayShutdown = false;
}


ATLASSERT(SUCCEEDED(hr));
return hr;
}