摘要:
1、动态数据交换(DDE)和网络动态数据交换(NDDE)[1,2] DDE可能是最为强大的进程间通信方式,实现也非常复杂。通信的两端分为服务端与客户端,两端都需要具有窗口。 一个DDE的通信过程大致如下: DDE会话由客户端发起,先初始化一个会话。DDE客户端会向服务端发送一个WM_DDE_INITIATE窗口消息。服务窗口收到此消息后,根据条件判断是否需要响应此消息,如果服务端确定可以与客户端建... 阅读全文
摘要:
WM_COPYDATA是一个非常特殊的消息,此消息可能携带一个比较大的消息参数,而其他消息都只能携带两个固定大小的参数(WPARAM和LPARAM)。在发送WM_COPYDATA消息时,WM_COPYDATA的wParam参数应该赋值为发送此消息的窗口,而lParam消息参数指向一个COPYDATASTRUCT结构类型的变量。typedef struct tagCOPYDATASTRUCT { ULONG_PTR dwData; DWORD cbData; PVOID lpData; } COPYDATASTRUCT, *PCOPYDATASTRUCT; dwData可以是任意值,lpD 阅读全文
摘要:
剪贴板由系统定义,并不属于任何一个特定的进程。系统中所有进程都可以访问和设置剪贴板。很多具有“复制”、“粘贴”功能的文字编译程序都是通过剪贴板进行操作。 剪贴板最大的特点就是数据传输没有明确的目标,数据是被动访问的,设置剪贴板的程序并不知道所设置的数据什么时候被访问,也不知道被哪个进程访问,剪贴板中的内容也可以多次访问,直到新的数据写入。因此通过剪贴板也是一种可供选择的进程间通信方式。但是由于系... 阅读全文
摘要:
管道是一种用于在进程间共享数据的机制,其实质是一段共享内存。Windows系统为这段共享的内存设计采用数据流I/0的方式来访问。由一个进程读、另一个进程写,类似于一个管道两端,因此这种进程间的通信方式称作“管道”。 管道分为匿名管道和命名管道。 匿名管道只能在父子进程间进行通信,不能在网络间通信,而且数据传输是单向的,只能一端写,另一端读。 命令管道可以在任意进程间通信,通信是双向的,任意一端都可读可写,但是在同一时间只能有一端读、一端写。一、注意点1、常用APIPipes[2]在[3,4]中也对这一部分进行了介绍。2、示例1)服务器端创建管道 监听 读写 关闭CreateN 阅读全文