[转]我们操纵Word需要通过类型库中的MFC类。而这些类,应该都是基于一个叫COleDispatchDriver的类。至少我所了解到的都是这样。 COleDispatchDriver没有基类。COleDispatchDriver类实现OLE自动化中的客户方。OLE调度接口为访问一个对象的方法和属性提供了途径。COleDispatchDriver的成员函数连接,分离,创建和释放一个IDispatch类型的调度连接。其它的成员函数使用变量参数列表来简化调用IDispatch::Invoke。 学习如何自动化控制 Word、Excel 和 Powerpoint 的对象模型的最佳方法是使用这些 Office 应用程序中的宏录制器: 从工具菜单上的宏选项中选择录制新宏,然后执行您感兴趣的任务。 Application:代表 Microsoft Word 应用程序。Application 对象包含可返回最高级对象的属性和方法。例如,ActiveDocument 属性可返回当前活动的Document 对象。 Documents:由 Word 当前打开的所有 Document(文档) 对象所组成的集合。 Document:代表一篇文档。Document 对象是 Documents 集合中的一个元素。Documents 集合包含 Word 当前打开的所有 Document 对象。 Selection:该对象代表窗口或窗格中的当前所选内容。所选内容代表文档中被选定(或突出显示的)的区域,若文档中没有所选内容,则代表插入点。每个文档窗格只能有一个活动的 Selection 对象,并且整个应用程序中只能有一个活动的 Selection 对象。 例子1:
AfxMessageBox(_T("WORD 已经运行启动啦,你可以用Ctrl+Alt+Del查看")); AfxMessageBox(_T("WORD准备要退出啦")); ::VariantInit(&OriginalFormat); //清空变量 //调用Quit退出WORD应用程序。当然不调用也可以,那样的话WORD还在运行着那 app.ReleaseDispatch(); //释放对象指针。切记,必须调用 AfxMessageBox(_T("Step1执行完成。接着请学习Setp2")); 例子2:
void CStep2Dlg::OnOK() AfxMessageBox(_T("WORD已经启动,现在要退出啦")); //准备调用_Application::Quit函数了,需要定义3个参数。 例子3: void CStep3Dlg::OnOK() AfxMessageBox(_T("看好了,就要新建一个空白文档了")); AfxMessageBox(_T("下面,程序要向WORD发送字符啦")); AfxMessageBox(_T("看见了吗?我要退出啦")); sel.ReleaseDispatch(); //Selection 不用了,一定要释放 CComVariant SaveChanges(false),OriginalFormat,RouteDocument; void CStep4Dlg::OnOK() Documents docs=app.GetDocuments(); Selection sel=app.GetSelection(); COleVariant varstrRange(""); sel.MoveUp(COleVariant((short)5),COleVariant((short)2),COleVariant((short)0)); AfxMessageBox(_T("好了,我要保存到c:\\hello.doc中了")); /**************** 程序思路 ****************************************** _Document doc=app.GetActiveDocument(); //得到ActiveDocument doc.SaveAs(&FileName,&FileFormat,&LockComments,&Password, sel.ReleaseDispatch(); CComVariant SaveChanges(false),OriginalFormat,RouteDocument; #include "msword9.h" void CStep5Dlg::OnOK() ::CoInitialize(NULL); for(int i=0;i<str.GetLength()/2;i++) CComVariant ExcludeHeader(false); //其实,这里可以直接调用sel.GetText()取得文本。 sel.Copy(); //复制到剪贴板 if(OpenClipboard()) CloseClipboard(); str.Replace("\r\n",""); //删除回车换行 CComVariant SaveChanges(false),OriginalFormat,RouteDocument; ::CoUninitialize(); 例子6:
void CStep6Dlg::OnOK() IUnknown *pUnknown=NULL; hr=::GetActiveObject(clsid,NULL,&pUnknown); //查找是否有WORD程序在运行 try sel=app.GetSelection(); |
[转]我们操纵Word需要通过类型库中的MFC类。而这些类,应该都是基于一个叫COleDispatchDriver的类。至少我所了解到的都是这样。 COleDispatchDriver没有基类。COleDispatchDriver类实现OLE自动化中的客户方。OLE调度接口为访问一个对象的方法和属性提供了途径。COleDispatchDriver的成员函数连接,分离,创建和释放一个IDispatch类型的调度连接。其它的成员函数使用变量参数列表来简化调用IDispatch::Invoke。 学习如何自动化控制 Word、Excel 和 Powerpoint 的对象模型的最佳方法是使用这些 Office 应用程序中的宏录制器: 从工具菜单上的宏选项中选择录制新宏,然后执行您感兴趣的任务。 Application:代表 Microsoft Word 应用程序。Application 对象包含可返回最高级对象的属性和方法。例如,ActiveDocument 属性可返回当前活动的Document 对象。 Documents:由 Word 当前打开的所有 Document(文档) 对象所组成的集合。 Document:代表一篇文档。Document 对象是 Documents 集合中的一个元素。Documents 集合包含 Word 当前打开的所有 Document 对象。 Selection:该对象代表窗口或窗格中的当前所选内容。所选内容代表文档中被选定(或突出显示的)的区域,若文档中没有所选内容,则代表插入点。每个文档窗格只能有一个活动的 Selection 对象,并且整个应用程序中只能有一个活动的 Selection 对象。 例子1:
AfxMessageBox(_T("WORD 已经运行启动啦,你可以用Ctrl+Alt+Del查看")); AfxMessageBox(_T("WORD准备要退出啦")); ::VariantInit(&OriginalFormat); //清空变量 //调用Quit退出WORD应用程序。当然不调用也可以,那样的话WORD还在运行着那 app.ReleaseDispatch(); //释放对象指针。切记,必须调用 AfxMessageBox(_T("Step1执行完成。接着请学习Setp2")); 例子2:
void CStep2Dlg::OnOK() AfxMessageBox(_T("WORD已经启动,现在要退出啦")); //准备调用_Application::Quit函数了,需要定义3个参数。 例子3: void CStep3Dlg::OnOK() AfxMessageBox(_T("看好了,就要新建一个空白文档了")); AfxMessageBox(_T("下面,程序要向WORD发送字符啦")); AfxMessageBox(_T("看见了吗?我要退出啦")); sel.ReleaseDispatch(); //Selection 不用了,一定要释放 CComVariant SaveChanges(false),OriginalFormat,RouteDocument; void CStep4Dlg::OnOK() Documents docs=app.GetDocuments(); Selection sel=app.GetSelection(); COleVariant varstrRange(""); sel.MoveUp(COleVariant((short)5),COleVariant((short)2),COleVariant((short)0)); AfxMessageBox(_T("好了,我要保存到c:\\hello.doc中了")); /**************** 程序思路 ****************************************** _Document doc=app.GetActiveDocument(); //得到ActiveDocument doc.SaveAs(&FileName,&FileFormat,&LockComments,&Password, sel.ReleaseDispatch(); CComVariant SaveChanges(false),OriginalFormat,RouteDocument; #include "msword9.h" void CStep5Dlg::OnOK() ::CoInitialize(NULL); for(int i=0;i<str.GetLength()/2;i++) CComVariant ExcludeHeader(false); //其实,这里可以直接调用sel.GetText()取得文本。 sel.Copy(); //复制到剪贴板 if(OpenClipboard()) CloseClipboard(); str.Replace("\r\n",""); //删除回车换行 CComVariant SaveChanges(false),OriginalFormat,RouteDocument; ::CoUninitialize(); 例子6:
void CStep6Dlg::OnOK() IUnknown *pUnknown=NULL; hr=::GetActiveObject(clsid,NULL,&pUnknown); //查找是否有WORD程序在运行 try sel=app.GetSelection(); |
[转]我们操纵Word需要通过类型库中的MFC类。而这些类,应该都是基于一个叫COleDispatchDriver的类。至少我所了解到的都是这样。 COleDispatchDriver没有基类。COleDispatchDriver类实现OLE自动化中的客户方。OLE调度接口为访问一个对象的方法和属性提供了途径。COleDispatchDriver的成员函数连接,分离,创建和释放一个IDispatch类型的调度连接。其它的成员函数使用变量参数列表来简化调用IDispatch::Invoke。 学习如何自动化控制 Word、Excel 和 Powerpoint 的对象模型的最佳方法是使用这些 Office 应用程序中的宏录制器: 从工具菜单上的宏选项中选择录制新宏,然后执行您感兴趣的任务。 Application:代表 Microsoft Word 应用程序。Application 对象包含可返回最高级对象的属性和方法。例如,ActiveDocument 属性可返回当前活动的Document 对象。 Documents:由 Word 当前打开的所有 Document(文档) 对象所组成的集合。 Document:代表一篇文档。Document 对象是 Documents 集合中的一个元素。Documents 集合包含 Word 当前打开的所有 Document 对象。 Selection:该对象代表窗口或窗格中的当前所选内容。所选内容代表文档中被选定(或突出显示的)的区域,若文档中没有所选内容,则代表插入点。每个文档窗格只能有一个活动的 Selection 对象,并且整个应用程序中只能有一个活动的 Selection 对象。 例子1:
AfxMessageBox(_T("WORD 已经运行启动啦,你可以用Ctrl+Alt+Del查看")); AfxMessageBox(_T("WORD准备要退出啦")); ::VariantInit(&OriginalFormat); //清空变量 //调用Quit退出WORD应用程序。当然不调用也可以,那样的话WORD还在运行着那 app.ReleaseDispatch(); //释放对象指针。切记,必须调用 AfxMessageBox(_T("Step1执行完成。接着请学习Setp2")); 例子2:
void CStep2Dlg::OnOK() AfxMessageBox(_T("WORD已经启动,现在要退出啦")); //准备调用_Application::Quit函数了,需要定义3个参数。 例子3: void CStep3Dlg::OnOK() AfxMessageBox(_T("看好了,就要新建一个空白文档了")); AfxMessageBox(_T("下面,程序要向WORD发送字符啦")); AfxMessageBox(_T("看见了吗?我要退出啦")); sel.ReleaseDispatch(); //Selection 不用了,一定要释放 CComVariant SaveChanges(false),OriginalFormat,RouteDocument; void CStep4Dlg::OnOK() Documents docs=app.GetDocuments(); Selection sel=app.GetSelection(); COleVariant varstrRange(""); sel.MoveUp(COleVariant((short)5),COleVariant((short)2),COleVariant((short)0)); AfxMessageBox(_T("好了,我要保存到c:\\hello.doc中了")); /**************** 程序思路 ****************************************** _Document doc=app.GetActiveDocument(); //得到ActiveDocument doc.SaveAs(&FileName,&FileFormat,&LockComments,&Password, sel.ReleaseDispatch(); CComVariant SaveChanges(false),OriginalFormat,RouteDocument; #include "msword9.h" void CStep5Dlg::OnOK() ::CoInitialize(NULL); for(int i=0;i<str.GetLength()/2;i++) CComVariant ExcludeHeader(false); //其实,这里可以直接调用sel.GetText()取得文本。 sel.Copy(); //复制到剪贴板 if(OpenClipboard()) CloseClipboard(); str.Replace("\r\n",""); //删除回车换行 CComVariant SaveChanges(false),OriginalFormat,RouteDocument; ::CoUninitialize(); 例子6:
void CStep6Dlg::OnOK() IUnknown *pUnknown=NULL; hr=::GetActiveObject(clsid,NULL,&pUnknown); //查找是否有WORD程序在运行 try sel=app.GetSelection(); |
[转]我们操纵Word需要通过类型库中的MFC类。而这些类,应该都是基于一个叫COleDispatchDriver的类。至少我所了解到的都是这样。 COleDispatchDriver没有基类。COleDispatchDriver类实现OLE自动化中的客户方。OLE调度接口为访问一个对象的方法和属性提供了途径。COleDispatchDriver的成员函数连接,分离,创建和释放一个IDispatch类型的调度连接。其它的成员函数使用变量参数列表来简化调用IDispatch::Invoke。 学习如何自动化控制 Word、Excel 和 Powerpoint 的对象模型的最佳方法是使用这些 Office 应用程序中的宏录制器: 从工具菜单上的宏选项中选择录制新宏,然后执行您感兴趣的任务。 Application:代表 Microsoft Word 应用程序。Application 对象包含可返回最高级对象的属性和方法。例如,ActiveDocument 属性可返回当前活动的Document 对象。 Documents:由 Word 当前打开的所有 Document(文档) 对象所组成的集合。 Document:代表一篇文档。Document 对象是 Documents 集合中的一个元素。Documents 集合包含 Word 当前打开的所有 Document 对象。 Selection:该对象代表窗口或窗格中的当前所选内容。所选内容代表文档中被选定(或突出显示的)的区域,若文档中没有所选内容,则代表插入点。每个文档窗格只能有一个活动的 Selection 对象,并且整个应用程序中只能有一个活动的 Selection 对象。 例子1:
AfxMessageBox(_T("WORD 已经运行启动啦,你可以用Ctrl+Alt+Del查看")); AfxMessageBox(_T("WORD准备要退出啦")); ::VariantInit(&OriginalFormat); //清空变量 //调用Quit退出WORD应用程序。当然不调用也可以,那样的话WORD还在运行着那 app.ReleaseDispatch(); //释放对象指针。切记,必须调用 AfxMessageBox(_T("Step1执行完成。接着请学习Setp2")); 例子2:
void CStep2Dlg::OnOK() AfxMessageBox(_T("WORD已经启动,现在要退出啦")); //准备调用_Application::Quit函数了,需要定义3个参数。 例子3: void CStep3Dlg::OnOK() AfxMessageBox(_T("看好了,就要新建一个空白文档了")); AfxMessageBox(_T("下面,程序要向WORD发送字符啦")); AfxMessageBox(_T("看见了吗?我要退出啦")); sel.ReleaseDispatch(); //Selection 不用了,一定要释放 CComVariant SaveChanges(false),OriginalFormat,RouteDocument; void CStep4Dlg::OnOK() Documents docs=app.GetDocuments(); Selection sel=app.GetSelection(); COleVariant varstrRange(""); sel.MoveUp(COleVariant((short)5),COleVariant((short)2),COleVariant((short)0)); AfxMessageBox(_T("好了,我要保存到c:\\hello.doc中了")); /**************** 程序思路 ****************************************** _Document doc=app.GetActiveDocument(); //得到ActiveDocument doc.SaveAs(&FileName,&FileFormat,&LockComments,&Password, sel.ReleaseDispatch(); CComVariant SaveChanges(false),OriginalFormat,RouteDocument; #include "msword9.h" void CStep5Dlg::OnOK() ::CoInitialize(NULL); for(int i=0;i<str.GetLength()/2;i++) CComVariant ExcludeHeader(false); //其实,这里可以直接调用sel.GetText()取得文本。 sel.Copy(); //复制到剪贴板 if(OpenClipboard()) CloseClipboard(); str.Replace("\r\n",""); //删除回车换行 CComVariant SaveChanges(false),OriginalFormat,RouteDocument; ::CoUninitialize(); 例子6:
void CStep6Dlg::OnOK() IUnknown *pUnknown=NULL; hr=::GetActiveObject(clsid,NULL,&pUnknown); //查找是否有WORD程序在运行 try sel=app.GetSelection(); |