vc调用word完成将当前获得的word文档内容返回

来源:互联网 发布:农村淘宝在哪里开通 编辑:程序博客网 时间:2024/05/06 20:27

#include "msword.h"
BSTR CWordocx6Ctrl::wordget()
{
 CString strResult;
 // TODO: Add your dispatch handler code here
    CLSID clsid;
 HRESULT hr;//here  is result 32bit long
 hr=::CLSIDFromProgID(L"Word.Application",&clsid);//通过progId取得clsId
 
 if(FAILED(hr))
 {
   return NULL;//如果没有安装word,则返回null
 }
 
 IUnknown *pUnknown=NULL;//com接口
 IDispatch *pDispatch=NULL;
 _Application app=NULL;
 Selection sel=NULL;
 hr=::GetActiveObject(clsid,NULL,&pUnknown);//查找是否有word程序运行
   
 if(FAILED(hr))
 {
  return NULL;//如果没有运行word返回null
 }

   try
   {
  //获得运行word对象调用IUnknown接口的queryinterface方法,返回word对象
     hr=pUnknown->QueryInterface(IID_IDispatch,(LPVOID*)&app);
    
  if(FAILED(hr))
   throw (_T("没有取得iddispatchptr"));
    //释放IUnknown接口对象
  pUnknown->Release();
  pUnknown=NULL;
    //通过app获得选区
  sel=app.GetSelection();
 
  if(!sel)
   throw (_T("没有正在编辑的文档"));
 
  sel.WholeStory();//全部选择
     strResult=sel.GetText();//取得文本
  
   }catch(LPCTSTR lpErr)
   {
  CString s=lpErr;
     return s.AllocSysString();;
   }
   //释放资源
   if(pUnknown)
    pUnknown->Release();
   if(sel)
    sel.ReleaseDispatch();
   if(app)
    app.ReleaseDispatch();
   //返回取得的文档内容
 return strResult.AllocSysString();
}

原创粉丝点击