知识大全 Delphi下利用DDE实现同Word的交互

Posted 客户

篇首语:停下休息的时候,不要忘记别人还在奔跑。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Delphi下利用DDE实现同Word的交互相关的知识,希望对你有一定的参考价值。

Delphi下利用DDE实现同Word的交互  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  一 引言

  Windows支持三种基本的IPC(进程间通信)机制 动态链接库(DLL)中的共享数据段 Windows剪贴版(CliPBoard)和动态数据交换DDE(Dynamic Data Exchange) 许多著名的Windows应用程序如Microsoft Word等都宣布支持DDE技术 并在程序中嵌入了DDE消息处理函数 而此类应用程序单在DDE技术上讲大多是作为一个DDE服务器形式存在的 这就允许用户通过自行编制的一些外围软件以DDE客户的身份对其进行连接 并通过向DDE服务器程序发送一些特定的宏命令来完成对服务器程序的动态控制 本文就以常用的Microsoft Word为例 讲述了在Delphi 编程环境下如何编制DDE客户程序 使其动态控制Microsoft Word的一般方法

  二 DDE的工作原理

  DDE顾名思义 是提供对不同程序在运行期间实现对数据的动态交换的一种通用技术 Windows消息虽然是在不同程序窗口间传送信息的最佳手段 但一条消息只能包含两个参数(wParam和lParam) 不能传送较多的信息 内存块是存放较多信息的重要手段 但不支持全局内存句柄的共享 DDE正是建立在Windows内部消息系统 全局原子和共享全局内存基础上的一种协议 用来协调Windows应用程序之间的数据交换和命令调用

  DDE协议使用三级命名 服务(service) 主题(topic)和数据项(item)来标识DDE所传递的数据单元 服务使应用程序具有了提供给其他程序的数据交换能力 一般服务就是应用程序的文件名 如Word的服务就是是Winword(可执行文件是Winword exe) 主题是对服务器有意义的信息单元 对于Word文档就是很好的主题 许多服务器都有默认的主题System 但无法知道服务器确切有那些主题 除非查阅应用程序的相关技术文档 每次DDE客户与服务程序之间的对话都是先由客户启动的 所以在每次客户启动之前 DDE服务器必须先投入运行 下面是一个典型的DDE会话流程的事务组成

  ·客户程序自动会话 服务器程序响应   ·客户和服务器用下述方法交换数据   ·服务器应客户的请求向客户发送数据   ·客户主动想服务器发送数据   ·客户要求服务器在数据修改时发送数据(热数据连接)   ·客户要求服务器在数据修改后发送通知(温数据连接)   ·在客户的要求下 服务器执行一个命令   ·由客户或服务器中止会话

  三 设计思路

  首先 在开发工具的选择上 选择了提供有现成的DDE 系列组件的 Borland Delphi 既然以Microsoft Word作为要连接的服务器 在与其建立连接之前要先设定好连接的服务与主题 由于本例只要求通过本程序控制Word的一些操作动作 如打开新文件 关闭文件 插入表格等等 所以可以分别设定这两项为 Winword 和 System 当设置好连接后就可以通过Delphi提供的DDEClientConv组件的OpenLink函数打开与这个服务的连接 剩下的工作就是向Word服务器发送宏命令 并通过组件向其发送执行宏的命令即可 用该组件的函数ExecuteMacro来实现之 四 程序的实现

  (一) 加入DDE客户端组件

  新建一App工程WordDDE 然后在Component Palette组件条的System属性页里选择DdeClientConv组件 并把它拖放到窗体上 修改其Name 属性为DDEClient

  (二) 添加同DDE服务进行交互的代码

  在工程上添加一个过程RunMacro 用于打开同Word服务器的链接 并通知服务器执行由Macro标识的宏命令 让Word按用户的意图完成响应的动作 完成之后由客户方断开这次连接 完成一次会话 下面是上述过程的实现代码

procedure TForm RunMacro(Macro:pChar);var pMacro:array[ ] of Char;beginDDEClient SetLink( Winword System );设置连接DDEClient OpenLink;按设置打开连接StrPCopy(pMacro Macro);if Not DDEClient ExecuteMacro(pMacro false) then执行宏命令ShowMessage( Unable to Execute Macro );DDEClient CloseLink;断开连接end;

  (三) 宏命令的执行

  宏(Macro)是客户程序要服务器完成的一些操作指令 对与特定的Microsoft Word 而言无非是些打开文件 插入分割符 复制粘贴字符等一些字处理方面的宏命令 这些宏命令完成的功能大多在Word的菜单下都能找到与之相匹配的菜单 如 关闭文件 菜单完成的功能就可以通过宏[FileClose]来完成 可以向窗口添加一个按钮或是菜单然后在其处理函数中添加执行宏的代码如下

procedure TForm N Click(Sender: TObject);beginRunMacro( [FileNew] );让Word创建一个新文件 宏[FileNew]由函数RunMacro通知Wordend;

  Word下有许多可供传送执行的宏命令 现将一些常用的宏罗列如下 以备实际编程时选用

  [FileNew] …… 创建新文件  [FileClose] …… 关闭文件  [FileSave] …… 保存文件  [FilePrint] …… 打印文件  [FileExit] …… 退出Word  [File ] …… 打开最近打开的文件 相应还有[File ] [File ]等等  [EditCut] …… 剪切操作   [EditCopy] …… 复制操作  [EditPaste] …… 粘贴操作  [EditUndo] …… 恢复上一步  [EditRedo] …… 重做上一步  [EditClear] …… 清除操作  [EditSelectAll] …… 全选操作  [ViewNormal] …… 正常视图  [ViewPage] …… 页面视图  [ViewOutLine] …… 大纲视图  [InsertBreak] …… 插入分割符  [InsertIndex] …… 插入索引  [FormatNumber] …… 格式化项目符号和编号  [ToolsOptions] …… 工具的选项  [TableInsertTable] …… 插入表格  [TableInsertRow] …… 插入行  [TableDeleteRow] …… 删除行  [TableSplit] …… 拆分表格  [TableSelectRow] …… 选择行  [TableSelectColumn] …… 选择列  [TableSelectTable] …… 选择表格  [TableSort] …… 排序  [WindowNewWindow] …… 新建窗口  [Window ] …… 最近打开的窗口 响应还有[Window ] [Window ]等等  [HelpIndex] …… 帮助的索引  [HelpAbout] …… 帮助的关于

  小结

cha138/Article/program/Delphi/201311/24789

相关参考

知识大全 Delphi向Word中导出数据

Delphi向Word中导出数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  数据导出到wor

知识大全 delphi编程实现在Word插入字符

delphi编程实现在Word插入字符  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 Delphi+Word=数据库+公文处理[2]

Delphi+Word=数据库+公文处理[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  让

知识大全 Delphi+Word=数据库+公文处理[1]

Delphi+Word=数据库+公文处理[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  D

知识大全 在Delphi中使用CreateOleObject方法对WORD文件进行操作

在Delphi中使用CreateOleObject方法对WORD文件进行操作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让

知识大全 建立同SAS交互的开发式VB客户端

建立同SAS交互的开发式VB客户端  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  简介  程序员

知识大全 利用替换变量提高Oracle数据库系统的交互性

利用替换变量提高Oracle数据库系统的交互性  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  数

交互保险社与相互保险社的比较

交互保险社与相互保险社的比较1.交互保险社与相互保险社都具有相互保险组织性质。两者都采用社员制。经营目的同为非营利性。社员之间互相提供保险。即每个社员为其他社员提供保险。每个社员同时又获得其他社员提供

Word具有强大的编辑功能,下面对Word功能的描述中不正确的是

Word具有强大的编辑功能,下面对Word功能的描述中不正确的是_____。A、Word文档中可以实现图文混排,并且还可以对插入的图片做简单的编辑处理B、Word文档中不仅可以插入表格,而其可以对表格

知识大全 ASP.NET可交互式位图窗体设计(下)

ASP.NET可交互式位图窗体设计(下)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  维护两个