孙鑫MFC学习笔记17:进程间通信

17

1.进程间通信4种方式

clip_image001

2.OpenClipboard打开剪贴板

3.EmptyClipboard清空剪贴板,并把所有权分配给打开剪贴板的窗口

4.SetClipboardData设置剪贴板数据格式

5.GlobalAlloc从堆中分配内存

6.GlobalLock对全局内存对象加锁,返回内存指针

7.GlobalUnlock解锁内存对象

8.发送剪贴板步骤:

OpenClipboard打开剪贴板

EmptyClipboard清空剪贴板

SetClipboardData设置数据类型

GlobalAlloc分配可移动内存对象

GloabalLock锁定内存对象,获取内存指针

写入数据

GlobalUnlock解锁内存对象

SetClipboardData设置剪贴板数据

CloseClipboard关闭剪贴板

9.GetClipboardData获取剪贴板数据

10.IsClipboardFormatAvailable检测剪贴板是否包含指定类型数据

11.接收剪贴板步骤

OpenClipboard打开剪贴板

IsClipboardFormatAvailable判断是否有指定格式数据

GetClipboardData获取内存对象句柄

GlobalLock获取内存指针(已取出数据)

GlobalUnlock解锁内存对象

CloseClipboard关闭剪贴板

12.CreatePipe创建匿名管道,返回管道读写句柄

13.CreateProcess创建一个进程

14.ZeroMemory将制定内存块设为0

15.GetStdHandle获取标准句柄

16.ReadFile、WriteFile读写管道

17.OnInitialUpdate虚函数是窗口创建完成后调用的第一个函数

匿名管道使用步骤:

CreatePipe创建管道,返回读写句柄(安全性参数需要设置)

CreateProcess将读写句柄传给子进程

子进程通过GetStdHandle获取读写句柄

18.命名管道

clip_image002

clip_image003

19.CreateNamedPipe创建命名管道

20.ConnectNamedPipe允许客户端进程等待一个客户端连接到命名管道实例上

21.命名管道创建步骤:

CreateNamedPipe创建命名管道

CreateEvent创建事件对象放入OVERLAPPED结构体

ConnectNamedPipe等待客户端连接

WaitForSingleObject等待事件

22.WaitNamedPipe等待一个命名管道

23.客户端连接管道步骤

WaitNamedPipe检测管道是否可用

CreateFile连接管道

管道读写使用ReadFile,WriteFile

24.邮槽

clip_image004

23.CreateMailslot创建邮槽

在发送数据时用CreateFile打开邮槽,需要设置FILE_SHARE_READ供接收端读取

原文地址:https://www.cnblogs.com/SkyFireITDIY/p/4372092.html