22、Windows API 进程间通信,剪贴板(Clipboard)

简介: 剪贴板由系统定义,并不属于任何一个特定的进程。系统中所有进程都可以访问和设置剪贴板。很多具有“复制”、“粘贴”功能的文字编译程序都是通过剪贴板进行操作。     剪贴板最大的特点就是数据传输没有明确的目标,数据是被动访问的,设置剪贴板的程序并不知道所设置的数据什么时候被访问,也不知道被哪个进程访问,剪贴板中的内容也可以多次访问,直到新的数据写入。

    剪贴板由系统定义,并不属于任何一个特定的进程。系统中所有进程都可以访问和设置剪贴板。很多具有“复制”、“粘贴”功能的文字编译程序都是通过剪贴板进行操作。<?xml:namespace prefix = o />

    剪贴板最大的特点就是数据传输没有明确的目标,数据是被动访问的,设置剪贴板的程序并不知道所设置的数据什么时候被访问,也不知道被哪个进程访问,剪贴板中的内容也可以多次访问,直到新的数据写入。因此通过剪贴板也是一种可供选择的进程间通信方式。但是由于系统中任何一个进程都可以无限制地访问剪贴板,剪贴板也是一种不可靠的通信方式。

参考[1,2]中介绍了对剪贴板的基本操作,包括设置剪贴板中的数据、从剪贴板获取数据等;及如何对剪贴板的修改进行监视,这种机制可以使用程序及时发现剪贴板中的数据变化;使用通过剪贴板传输数据可以具有实时性;还有剪贴板中数据的格式及自定义数据格式的方法。

Clipboard[3]

1、监视剪贴板

原理:

(1) WM_DRAWCLIPBOA

系统提供了WM_DRAWCLIPBOARD消息用于监视剪贴板的变。如果调用

SetClipboardViewer函数设置了窗口为剪贴板查看器,那么当剪贴板中的内容变化时,所注册的查看器窗口会收到WM_CHANGECBCHAIN消息和WM_DRAWCLIPBOARD消息。

    当剪贴板中的内容变化时,窗口会收到WM DRAWCLIPBOARD消息。当查看器链新的节点加入或有节点退出窗口会收到WM_CHANGECBCHAIN消息。

(2) SetClipboardViewer函数

2、剪贴板数据格式

    剪贴板中可能会存在各种各样的数据。因此剪贴板中在保存数据的同时还需要保存数据的格式信息。

    系统使用一个UINT类型的数据来表示剪贴板中的数据格式。在这些格式信息中,有很多是各种应用程序之间通用的,比如文本、位图等。这些数据格式已经由系统预先定义,称为标准格式。

    还有一些应用程序也希望自行定义剪贴板的数据格式,这样可以方便地在同一个应用程序的不同实例间进行数据传递而不需要对数据的格式进行过多的处理(典型的就包括Word)

参考

[1] 精通Windows API 函数、接口、编程实例

[2] http://www.cnblogs.com/mydomain/archive/2010/09/04/1818257.html

[3] http://msdn.microsoft.com/en-us/library/ms649012%28VS.85%29.aspx

目录
相关文章
|
6月前
|
监控 编译器 API
[笔记]Windows核心编程《二十二》注入DLL和拦截API(一)
[笔记]Windows核心编程《二十二》注入DLL和拦截API
143 0
|
3月前
|
API Python Windows
python3应用windows api对后台程序窗口及桌面截图并保存的方法
python3应用windows api对后台程序窗口及桌面截图并保存的方法
89 1
|
6月前
|
存储 缓存 API
[总结]Windows Crypto API 自动更新根证书问题原因及解决方案
[总结]Windows Crypto API 自动更新根证书问题原因及解决方案
|
6月前
|
API Windows
[笔记]Windows核心编程《番外篇》常用的NT API及使用示例
[笔记]Windows核心编程《番外篇》常用的NT API及使用示例
|
6月前
|
安全 API Windows
[笔记]Windows核心编程《二十二》注入DLL和拦截API(三)
[笔记]Windows核心编程《二十二》注入DLL和拦截API(三)
129 0
|
6月前
|
消息中间件 编解码 安全
[笔记]Windows核心编程《二十二》注入DLL和拦截API(二)
[笔记]Windows核心编程《二十二》注入DLL和拦截API(二)
103 0
|
6月前
|
API C++ Windows
Windows API Hooking 学习
Windows API Hooking 学习
|
API Windows 编解码
29、Windows API GDI(1)
GDI是Graphics Device Interface(图形设备接口)的简称,当Windows应用程序需要显示点、线、图像、文字等内容,在显示器或打印输入这些内容时,就需要使用到GDI。图形设备接口是Windows图形界面的基础。
1191 0
|
API Windows
30、Windows API GDI(2)
一、GDI的几个示例与概念 1、笔和话刷的基本操作 示例 画笔示例 **************************************//* 头文件 */#include /* 函数声明 */void GdiOut(HDC hdc);// WinMainint WI...
903 0
|
API Windows
31、Windows API GDI(3)
一、绘制图形     GDI所能绘制形状有很多种,可区分为标准形状和非标准形状。标准形状使用几个简单、确定的属性就可以确定的形状,比如矩形(左上角点位置和长度)、椭圆(使用外切矩形)、圆角矩形(一个矩形加圆角半径)、弓形、扇形。
782 0