其返回值应该是布尔值吧,Can the following do the job?
try
{
   if(!Application.CreateDispatch("Word.Application"));
   {
    ......
   }
}
catch(...)
{
   ... ... 
}
   ...
}

解决方案 »

  1.   

    1、确保在 CYourApp::InitInstance/ExitInstance 里面分别调用了 CoInitialize/CoUninitialize;
    2、如果上面的不成问题,跟踪调试,看一看 HRESULT 的值,用 ERRLOOKUP 查一下。
      

  2.   

    用如下的这段代码可以得到Word的应用对象。void CReadWordView::OnWordLoad() 
    {
    // If word is already running, attach to it; otherwise, start it
    LPDISPATCH pDisp;
    LPUNKNOWN pUnk;
    CLSID clsid; TRACE("Entering CReadWordView::OnWordLoad\n");
    BeginWaitCursor( );
    ::CLSIDFromProgID(L"Word.Application.8", &clsid); // from Registry
    if(::GetActiveObject(clsid, NULL, &pUnk) == S_OK)
    {
    VERIFY(pUnk->QueryInterface(IID_IDispatch, (void**)&pDisp) == S_OK);
    m_app.AttachDispatch(pDisp);
    pUnk->Release( );
    TRACE(" attach complete \n");
    }
    else
    {
    if(!m_app.CreateDispatch("Word.Application.8"))
    {
    AfxMessageBox("Micorsoft Word program not found!");
    }
    TRACE("create complete\n");
    }
    EndWaitCursor( );
    }我用的是类型库,另外,在CReadWordApp::InitInstance( )中也要加上COM的初始化调用。