Исходный код
//---------------------------------------------------------
// Интеграция с AutoCAD.
// Запускает AutoCAD и открывает в нем документ.
//---------------------------------------------------------
// получить диалог открытия файла
CComPtr<ITDMSDialogs> pDialogs;
CheckError(pApp->get_Dialogs(&pDialogs));
CComPtr<ITDMSFileDlg> pFileDialog;
CheckError(pDialogs->get_FileDlg(&pFileDialog));
CheckError(pFileDialog->put_OpenFileDialog(TRUE));
// расширение по умолчанию
BSTR bsDefExt = A2BSTR(".dwg");
CheckError(pFileDialog->put_DefaultExt(bsDefExt));
SysFreeString(bsDefExt);
// фильтр
BSTR bsFilter = A2BSTR("Drawing (*.dwg)|*.dwg|DXF (*.dxf)|*.dxf|All Files (*.*)|*.*||");
CheckError(pFileDialog->put_Filter(bsFilter));
SysFreeString(bsFilter);
// parent window
CheckError(pFileDialog->put_ParentWindow((long)GetActiveWindow()));
// показать диалог
VARIANT_BOOL bResult;
pFileDialog->Show(&bResult);
// получить утилиты
CComPtr<ITDMSUtility> pUtility;
CheckError(pApp->get_Utility(&pUtility));
// запустить текущую версию автокада
CComPtr<ITDMSAcad> pAcad;
VARIANT varAcadName;
varAcadName.vt = VT_EMPTY;
CheckError(pUtility->StartAutoCAD(varAcadName, &pAcad));
// запустить конкрентную версию автокада
CComPtr<ITDMSAcad> pAcad;
VARIANT varAcadName;
varAcadName.vt = VT_BSTR;
varAcadName.bstrVal = A2BSTR("Autodesk Architectural Desktop 3.3");
CheckError(pUtility->StartAutoCAD(varAcadName, &pAcad));
SysFreeString(varAcadName.bstrVal);
// открыть документ в автокаде
if (bResult) {
BSTR bsFileName;
pFileDialog->get_FileName(&bsFileName);
CheckError(pAcad->OpenDocument(bsFileName));
}