Windows 剪贴板格式






4.99/5 (17投票s)
剪贴板和拖放对象格式概述
定义
下表使用以下类型定义
- 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_TEXT 到 CF_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_DIB 和 CF_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 应用程序的拖放图像和拖放描述 包含一个演示应用程序,可用于显示剪贴板上的实际对象(剪贴板查看器)以及拖放到信息列表中的拖动对象。
参考文献
- 剪贴板格式 [MSDN]
- 标准剪贴板格式 [MSDN]
- Shell 剪贴板格式 [MSDN]
- Shell 数据对象 [MSDN]
- 处理 Shell 数据传输场景 [MSDN]
- HTML 剪贴板格式 [MSDN]
- RegisterClipboardFormat 函数 [MSDN]
- OLE 背景 [MSDN]
- 剪贴板 API 和事件 [W3C]
历史
- 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 描述