#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();
}