CreateDispatch

 //   TODO:   Add   extra   validation   here  
 HRESULT   hr;  
 hr=CoInitialize(NULL);  
 if(FAILED(hr))  
  AfxMessageBox("failed   to   call   CoInitialize()");  
 //   ASSERT(!FAILED(hr));  
 IUnknown   *pUnk;  
 IDispatch   *pDisp;  
 CLSID   clsid;  
 _Application   m_wordApp;  
 CLSIDFromProgID(L"Word.Application",   &clsid);  
 //²é¿´ÊÇ·ñÓÐÒѾ­´ò¿ªµÄWord¶ÔÏó  
 hr   =   GetActiveObject(clsid,   NULL,   (IUnknown**)&pUnk);  
 if   (!FAILED(hr))  
 {  
  hr   =   pUnk->QueryInterface(IID_IDispatch,   (void   **)&pDisp);  
  ASSERT(!FAILED(hr));  
  m_wordApp.AttachDispatch(pDisp,TRUE);  
  pUnk->Release();  
 }  
 else  
  //   ÈôÎÞ£¬Ôòн¨Ò»¸öWord¶ÔÏó  
 {  
  COleException   e;  
  if(!m_wordApp.CreateDispatch("Word.Application",&e))  
  {  
   e.ReportError();  
   AfxMessageBox("´´½¨ms_word¶ÔÏóʧ°Ü");  
   return;  
   //   exit(1);  
  }  
 }  
 m_wordApp.SetVisible(TRUE);  
 /*AfxMessageBox("Start   word   OK");   */
 COleVariant   vOpt(DISP_E_PARAMNOTFOUND,   VT_ERROR);  
   
  m_wordApp.Quit(&vOpt,&vOpt,&vOpt);  

你可能感兴趣的:(windows)