VC检测OLE控件是否已经注册,并注册它
如果OLE控件不存在的话,在
try
{
HRESULT hr;
hr = ::CoInitializeEx( Null, COINIT_APARTMENTTHREADED );
if( FAILED(hr) )
_com_issue_error(hr);
LabLE1:
hr = m_lpAnimator.CreateInstance(CLSID_GifAnimator);
if( FAILED(hr) )
_com_issue_error(hr); //如果控件没有注册,就会抛出异常
}
catch( _com_error e )
{
//////////////////////////////////////////////////////////////////////////
//这个可以检测该控件是否已经注册,如果没有注册则注册;
CString str="没有注册类别";
if (str==e.ErrorMessage())
{
char *p=str.GetBuffer(500);
GetCurrentDirectory(500,p);
str.ReleaseBuffer();
str+="[url=file://\\ImageOle.dll]\\ImageOle.dll[/url]";
CString regstr;
regstr.Format("regsvr32 /s %s",str);
WinExec(regstr,0);
goto LabLE1; //这里有点不合理,哈哈,凑合着用吧
}
AfxMessageBox(e.ErrorMessage());
::CoUninitialize();
}
的时候就会抛出异常;
在异常里这样做