WINDOWS系统中几种常用的进程通讯方式及其DELPHI实现.pdf
文本预览下载声明
第9 卷 第4 期 重庆电力高等专科学校学报 2004 年 12 月
Vol.9 No.4 Journal of Chongqing Electric Power College Dec. 2004
WINDOWS系统中几种常用的进程通讯方式及其DELPHI实现
王 电 钢 1 吴 思 远2
(1.四川省电力公司培训中心,成都 610071;2.重庆邮电学院,重庆 400065)
【摘要】在各种应用系统的开发过程中,不同进程之间的数据交换(IPC)是一种非常重要同时也是非常实用的技
术。基于WINDOWS平台的进程间通讯往往可以通过不同的方式加以实现。本文对WINDOWS系统中几种常用的进程通
讯方式进行了分析并给出了在DELPHI中的具体实现方法。
【关键词】进程间通讯;消息机制;内存文件映射;邮槽;DDE
【中图分类号】TP316 【文献标识码】A 【文章编号】1008-8032(2004)04-0047-06
0 引言
进程间通讯(InterProcess Communication ,IPC)技术在基于WINDOWS平台的项目开发与系统集
成上应用得非常广泛。例如我们在使用Word时经常会从网页上或别的编辑器上复制一段文字到Word
中,这其实就是通过剪贴板技术实现的一种进程通讯的简单例子。又比如在计算机监控系统中我们
常常需要一边采集外部设备的各种数据一边对其加以显示和保存,这也需要通过不同进程之间的数
据交换技术加以实现。WINDOWS系统中进程通讯的方法有很多,除了常用的剪贴板技术外还可以通
过以下的几种方法加以实现:WINDOWS消息机制、内存文件映射、邮槽、DDE(动态数据交换)等。本
文拟对这几种常用的进程通讯方式及其在DELPHI中的实现方法加以介绍。
1 WINDOWS消息机制
WINDOWS是一种面向对象的体系结构,WINDOWS环境和应用程序都是通过消息来交互的。WINDOWS
应用程序开始执行后,WINDOWS为该程序创建一个消息队列,用以存放传递给该程序可能创建的
各种不同窗口的消息。通过在不同的进程之间发送特定的消息(例如 WM_COPYDATA消息)并在该消
息中附加上需要传递的信息就可以比较方便地实现进程间数据的共享。使用该消息涉及一个
TCopyDataStruct结构。该结构中有三个成员:(1)dwData 是一个32位的附加参数;(2)cbData 表
示要传递的数据区的大小;(3)lpData 表示要传递的数据区的指针。
下面是利用WM_COPYDATA消息发送数据的调用方式:
procedure SendMessageToProcess(hwndSend:HWND;s:string);
const Msg=$1450;//自定义消息常量
var DataBuffer: TcopyDataStruct;Buf:Pchar;BufSize:Integer;
begin
BufSize:=length(s);
Buf:=AllocMem(BufSize);
Strcopy(Buf,Pchar(s));//拷贝数据到缓冲区
try
with DataBuffer do
begin
dwData:=Msg;cbData:=BufSize;lpData:=Buf;//填充消息中的数据
end;
SendMessage(hwndSend, WM_COPYDATA,0,Longint(@DataBuffer));
//发送WM_COPYDATA消息
finally FreeMem(Buf,BufSize);
[收稿日期] 2004-10-12
-48- 重庆电力高等专科学校学报 第9卷
end; end;
下面是接收利用WM_COPYDATA消息传递数据的调用方式:
procedure WMCopyData(var M:TMe
显示全部