基于Visual C++ 的自动化客户端的实现
2007-03-18 21:29:29 来源:WEB开发网核心提示: 为了使我们生成的项目支持自动化,为此我们要在项目中的StdAfx.h的文件末尾添加上下面一行:#include "afxdisp.h";在应用程序的InitInstance函数的开始添加下面的调用:if (CoInitialize(NULL)!=0){AfxMessag
为了使我们生成的项目支持自动化,为此我们要在项目中的StdAfx.h的文件末尾添加上下面一行:#include "afxdisp.h";在应用程序的InitInstance函数的开始添加下面的调用:
if (CoInitialize(NULL)!=0)
{
AfxMessageBox("初始化COM支持库失败!");
exit(1);
}
首先通过COleDispatchDriver的成员函数CreateDispatch()创建一个Word2000的Applicaion对象,然后通过COleDispatchDriver的成员函数AttachDispatch()将Documents和Selection对象与Application对象提供的IDispatch接口关联起来,在程序对上述对象使用完毕后,要使用COleDispatchDriver的成员函数ReleaseDispatch()来释放对象和接口之间的连接。
有了上面的准备工作,下面给出如何实现上述操作目标的具体代码,该程序在Windows Me环境下,Visual C++6.0开发平台上编译通过,运行正常。
void CKkView::OnMenuAutoDisplay()
{
// TODO: Add your command handler code here
static char BASED_CODE szFilter[]="Word Files(*doc)|*.DOC||";
CFileDialog fd(true,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter,NULL);
CString strFilePath;//用来保存打开的文件名;
if(fd.DoModal()==IDOK)
strFilePath=fd.GetPathName();//获取要打开的Word文档的名字;
_Application m_App;//定义Word提供的应用程序对象;
Documents m_Docs;//定义Word提供的文档对象;
Selection m_Sel;//定义Word提供的选择对象;
m_Docs.ReleaseDispatch();
m_Sel.ReleaseDispatch();
m_App.m_bAutoRelease=true;
if(!m_App.CreateDispatch("Word.Application"))
{
AfxMessageBox("创建Word服务失败!");
exit(1);
}
//下面是定义VARIANT变量;
COleVariant varFilePath(strFilePath);
COleVariant varstrNull("");
COleVariant varZero((short)0);
COleVariant varTrue(short(1),VT_BOOL);
COleVariant varFalse(short(0),VT_BOOL);
m_Docs.AttachDispatch(m_App.GetDocuments());//将Documents类对象m_Docs和Idispatch接口关联起来;
m_Docs.Open(varFilePath,varFalse,varFalse,varFalse,
varstrNull,varstrNull,varFalse,varstrNull,
varstrNull,varTrue,varTrue,varTrue);
//打开Word文档;
m_Sel.AttachDispatch(m_App.GetSelection());//将Selection类对象m_Sel和Idispatch接口关联起来;
m_Sel.WholeStory ();//选择文档中的全部内容;
m_Sel.Copy();//将数据拷贝到剪贴板
this->GetEditCtrl( ).Paste ();//将数据粘贴到程序的"视"中;
m_Docs.ReleaseDispatch();//断开关联;
m_Sel.ReleaseDispatch();
}
本文主要讲述了基于自动化技术来操作Word,实现自动化的客户端的实现思想,为读者起到抛砖引玉的作用,读者可以在此基础上,实现对Word、Excel、PowerPoint等服务器端进行更复杂的操作。
- ››基于IP地址的vsftp服务器
- ››Visual Basic 2008 数学函数
- ››Visual Studio2005中Smart Device的问题
- ››Visual Studio 中根据数据库字段动态生成控件
- ››基于MySQL 水平分区的优化示例
- ››基于CentOS5的Linux下pptp和openvpn的搭建及配置
- ››Visual Studio 11全新黑色主题
- ››Visual Studio 2011 Beta新特性(一):安装VS201...
- ››基于JavaScript的网页版塔防游戏
- ››基于Android平台 QQ大战360手机游戏爆红
- ››基于Windows Azure的云计算应用设计
- ››Visual Studio自定义调试窗体两个小技巧
更多精彩
赞助商链接