65.9K
CodeProject 正在变化。 阅读更多。
Home

Windows 剪贴板格式

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.99/5 (17投票s)

2016年4月8日

CPOL

6分钟阅读

viewsIcon

72517

剪贴板和拖放对象格式概述

定义

下表使用以下类型定义

ANSI 文本
Null 结尾的 ANSI 或多字节字符串
Unicode 文本
Null 结尾的 Unicode (UTF-16LE) 字符串
ANSI / Unicode 文本列表
null 结尾的字符串列表,后跟一个 NULL 字符(双 NULL 结尾)
ASCII / ANSI 文本
按定义为 ASCII 7 位文本,但可能支持 ANSI 8 位文本
DWORD (BOOL)
表示布尔值的 DWORD 值(如果非零,则为 true

链接在括号中指示目标。对于表格中的 MSDN 链接,省略了指示。

标准剪贴板格式

标准剪贴板格式 [MSDN] 使用在 WinUser.h 中定义的数字 ID。所有非标准格式都必须使用唯一的格式名称进行注册。

格式标识符 数据类型 描述
CF_TEXT (1) ANSI 文本 文本
CF_BITMAP (2) HBITMAP 位图(GDI 对象)的句柄
CF_METAFILEPICT (3) METAFILEPICT Windows 格式元文件 图片
CF_SYLK (4) ANSI 文本 Microsoft 符号链接 [Wikipedia]
CF_DIF (5) ASCII 文本 Software Arts 数据交换格式 [Wikipedia]
CF_TIFF (6) TIFF [Wikipedia] TIFF 图像
CF_OEMTEXT (7) 8 位 DOS 文本 文本
CF_DIB (8) BITMAPINFO 结构后跟位图
CF_PALETTE (9) HPALETTE 颜色调色板(GDI 对象)的句柄
CF_PENDATA (10) - Windows 3.1 笔扩展数据
CF_RIFF (11) RIFF 资源交换文件格式 (RIFF) 音频
CF_WAVE (12) WAVE WAVE 音频
CF_UNICODETEXT (13) Unicode 文本 文本
CF_ENHMETAFILE (14) HENHMETAFILE 增强型元文件 句柄
CF_HDROP (15) DROPFILES 文件名列表
CF_LOCALE (16) DWORD (LCID) 用于 CF_TEXTCF_UNICODE 转换的 LCID
CF_DIBV5 (17) BITMAPV5HEADER 结构后跟位图
CF_DSPTEXT (0x0081) ANSI 文本 文本
CF_DSPBITMAP (0x0082) HBITMAP 位图(GDI 对象)的句柄
CF_DSPMETAFILEPICT (0x0083) METAFILEPICT Windows 格式元文件 图片
CF_DSPENHMETAFILE (0x008E) HENHMETAFILE 增强型元文件 句柄

Shell 剪贴板格式

Shell 剪贴板格式 [MSDN] 用于通过剪贴板和拖放传输 shell 对象。对于其中大多数,头文件 shlobj.h 中都有格式名称的定义

定义 格式名称
CFSTR_SHELLIDLIST Shell IDList 数组
CFSTR_SHELLIDLISTOFFSET Shell Object 偏移量
CFSTR_NETRESOURCES 网络资源
CFSTR_FILEDESCRIPTORA FileGroupDescriptor
CFSTR_FILEDESCRIPTORW FileGroupDescriptorW
CFSTR_FILECONTENTS FileContents
CFSTR_FILENAMEA FileName
CFSTR_FILENAMEW FileNameW
CFSTR_PRINTERGROUP PrinterFriendlyName
CFSTR_FILENAMEMAPA FileNameMap
CFSTR_FILENAMEMAPW FileNameMapW
CFSTR_SHELLURL 统一资源定位符
CFSTR_INETURLA 统一资源定位符
CFSTR_INETURLW 统一资源定位符 W
CFSTR_PREFERREDDROPEFFECT 首选 DropEffect
CFSTR_PERFORMEDDROPEFFECT 已执行的 DropEffect
CFSTR_PASTESUCCEEDED 粘贴成功
CFSTR_INDRAGLOOP InShellDragLoop
CFSTR_DRAGCONTEXT DragContext
CFSTR_MOUNTEDVOLUME MountedVolume
CFSTR_PERSISTEDDATAOBJECT PersistedDataObject
CFSTR_TARGETCLSID TargetCLSID
CFSTR_LOGICALPERFORMEDDROPEFFECT 逻辑执行的 DropEffect
CFSTR_AUTOPLAY_SHELLIDLISTS 自动播放枚举的 IDList 数组
CFSTR_UNTRUSTEDDRAGDROP UntrustedDragDrop
CFSTR_FILE_ATTRIBUTES_ARRAY 文件属性数组
CFSTR_INVOKECOMMAND_DROPPARAM InvokeCommand DropParam
CFSTR_SHELLDROPHANDLER DropHandlerCLSID
CFSTR_DROPDESCRIPTION DropDescription

 

格式名称 数据类型 描述
AsyncFlag DWORD (BOOL) 在后台执行插入/粘贴操作。由资源管理器使用以避免阻塞当前实例
FileContents 二进制 文件内容
FileGroupDescriptor FILEGROUPDESCRIPTOR FILEDESCRIPTOR 数组
FileGroupDescriptorW FILEGROUPDESCRIPTOR FILEDESCRIPTOR 数组
FileName ANSI 文本 短 (8.3) 格式的单个文件名
FileNameW Unicode 文本 单个文件名
FileNameMap ANSI 文本列表 重命名时的文件名列表
FileNameMapW Unicode 文本列表 重命名时的文件名列表
MountedVolume Unicode 文本 挂载卷的路径
Shell IDList 数组 CIDA PIDL(指向 ITEMIDLIST 的指针)偏移量数组
自动播放枚举的 IDList 数组 CIDA PIDL(指向 ITEMIDLIST 的指针)偏移量数组
Shell 对象偏移量 POINT[] 点数组
文件属性数组 FILE_ATTRIBUTES_ARRAY 文件属性数组
网络资源 NRESARRAY NETRESOURCE 结构数组
PrinterFriendlyName DROPFILES 打印机名称列表
统一资源定位符 ANSI 文本 URL
统一资源定位符 W Unicode 文本 URL

拖放相关格式

这些格式用于拖放。其中大多数未记录。

格式名称 数据类型 描述
ComputedImage DWORD ?
DisableDragText DWORD (BOOL) ?
DragContext IStream 由 Windows 拖放助手内部使用
DragImageBits SHDRAGIMAGE 拖动图像 位图
DragSourceHelperFlags DWORD 传递给 IDragSourceHelper2::SetFlags 的值
DragWindow DWORD (HWND) 拖动图像窗口的窗口句柄
DropDescription DROPDESCRIPTION Aero 拖动光标类型和文本
DropHandlerCLSID CLSID GUID 拖放处理程序的 CLSID GUID
InShellDragLoop DWORD (BOOL) 在拖放循环中时非零
InvokeCommand DropParam Unicode 文本 ?
IsComputingImage DWORD (BOOL) ?
IsShowingLayered DWORD (BOOL) 当拖放目标显示拖动图像时非零
IsShowingText DWORD (BOOL) 当拖放目标请求更新 Aero 光标时非零
逻辑执行的 DropEffect DWORD (DROPEFFECT) 逻辑执行的拖放效果,带有优化移动
粘贴成功 DWORD (DROPEFFECT) 当粘贴删除操作成功时由目标设置
执行的 DropEffect DWORD (DROPEFFECT) 由目标设置的执行的拖放效果
首选 DropEffect DWORD (DROPEFFECT) 由源设置的首选拖放效果。也用于剪贴板
TargetCLSID CLSID GUID 拖放目标的 CLSID GUID
UntrustedDragDrop DWORD URL 操作标志
UsingDefaultDragImage DWORD (BOOL) 当拖动图像是系统默认图像时非零

OLE 格式

格式名称 数据类型 描述
链接 ANSI 文本列表 OLE 1.0 链接
原生 二进制 OLE 1.0 数据
ObjectLink ANSI 文本列表 OLE 1.0 链接
OwnerLink ANSI 文本列表 OLE 1.0 链接
数据对象 二进制 OLE 2.0 数据
嵌入对象 二进制 OLE 2.0 数据
对象描述符 OBJECTDESCRIPTOR OLE 2.0 用户界面信息
链接源描述符 OBJECTDESCRIPTOR OLE 2.0 用户界面信息
链接源 IMoniker OLE 2.0。后跟文档类 ID
超链接 IHlink 启用超链接导航到其目标的方法

常用应用程序剪贴板格式

许多应用程序使用文件扩展名或 MIME 类型 [Wikipedia] 作为格式名称,并使用相应的文件格式传递数据。格式名称不区分大小写,但通常的做法是 MIME 类型使用全小写,文件扩展名使用全大写,描述性名称使用帕斯卡大小写(每个单词的首字母大写)。能够接收此类格式的剪贴板和拖放目标应用程序应注册所有常用格式名称变体。

头文件 UrlMon.h 包含一些 MIME 类型的定义(参见 URL Moniker 剪贴板格式 [MSDN])。

常用文本格式

格式名称 数据类型 描述
text/plain ASCII / ANSI 文本 另请参见 CF_TEXT
HTML 格式 UTF-8 文本 Microsoft 特定的 HTML 剪贴板格式
text/html 文本 HTML [W3C] 文件内容。编码由 BOM 和 HTML 头部定义
HTML (超文本标记语言) 文本 参见 text/html
text/csv ASCII / ANSI 文本 逗号分隔值 (CSV) [IETF] 文件内容
CSV ASCII / ANSI 文本 参见 text/csv
text/richtext ASCII / ANSI 文本 Word 2007: 富文本格式 (RTF) 规范,版本 1.9.1 [Microsoft]
富文本格式 ASCII / ANSI 文本 参见上文
无对象的富文本格式 ASCII / ANSI 文本 参见上文
RichEdit 文本和对象 ASCII / ANSI 文本 参见上文
作为文本的 RTF ASCII / ANSI 文本 参见上文
text/uri-list ASCII 文本 text/uri-list Internet 媒体类型 [IETF]

常用图像格式

格式名称 数据类型 描述
image/bmp BITMAPFILEHEADER 文件头,后跟信息头(参见 CF_DIBCF_DIBV5)和位图数据。
BMP BITMAPFILEHEADER 参见 image/bmp
image/gif 二进制 GIF [W3C] 文件内容
GIF 二进制 参见 image/gif
image/jpeg 二进制 JPEG [W3C] 文件内容
JPEG 二进制 参见 image/jpeg
JPG 二进制 参见 image/jpeg
image/png 二进制 PNG [W3C] 文件内容
PNG 二进制 参见 image/png
image/tiff 二进制 TIFF [Wikipedia] 文件内容。另请参见 CF_TIFF

关注点

我的文章 MFC 应用程序的拖放图像和拖放描述 包含一个演示应用程序,可用于显示剪贴板上的实际对象(剪贴板查看器)以及拖放到信息列表中的拖动对象。

参考文献

历史

  • 2016 年 4 月 8 日:初始版本
  • 2016 年 4 月 14 日:微小文本更改,添加了 GUID 和 URL moniker 格式的链接
  • 2016 年 4 月 18 日:拆分并重新排列了表格,添加了一些 OLE 格式,添加了 text/richtext,更正了增强型元文件类型
  • 2016 年 6 月 21 日:添加了 text/uri-list、image/bmp、BMP 格式;添加了 W3C 剪贴板 API 链接
  • 2017 年 6 月 22 日:添加了 AsyncFlag 格式以及 Preferred DropEffect 也用于剪贴板
  • 2018 年 3 月 8 日:修复了错误的 FileContents 描述
© . All rights reserved.