Clipboard 类
Clipboard 类封装了系统剪贴板——即 Win32 进程间复制粘贴API——并将其作为单例对象公开。代码通过它可以读写文本、查询当前可用的格式,以及(最终——参见图片数据注意事项)读写图片。
Clipboard 不可创建:每个进程只有一个实例,由运行时拥有,并通过Global应用对象的Clipboard属性公开。代码无需限定即可访问:
' Copy
Clipboard.Clear
Clipboard.SetText "Hello, world!"
' Paste
If Clipboard.GetFormat(vbCFText) Then
txtEditor.Text = Clipboard.GetText()
End If格式
剪贴板内容以格式标记——文本、位图、文件、富文本等。ClipboardConstants枚举列出了预定义的格式:
| 常量 | 值 | 含义 |
|---|---|---|
| vbCFText | 1 | ANSI纯文本。 |
| vbCFBitmap | 2 | DDB(设备相关位图)。 |
| vbCFMetafile | 3 | Windows图元文件(WMF)。 |
| vbCFDIB | 8 | DIB(设备无关位图)。 |
| vbCFPalette | 9 | 调色板。 |
| vbCFUnicodeText | 13 | UTF-16纯文本。 |
| vbCFEMetafile | 14 | 增强型图元文件(EMF)。 |
| vbCFFiles | 15 | 文件路径列表(CF_HDROP)。 |
| vbCFLink | &HFFFFBF00 | DDE链接(旧版OLE-1链接源)。 |
| vbCFRTF | &HFFFFBF01 | 富文本格式。 |
GetText / SetText方法接受一个可选的Format参数,限制为文本类子集(vbCFText、vbCFUnicodeText、vbCFRTF、vbCFLink)。GetData / SetData方法处理图片,仅限于位图和图元文件格式。
图片数据
图片方法——GetData和SetData——已声明但尚未连接。
INFO
GetData和SetData保留用于与VB6兼容;目前在twinBASIC中尚未实现。对于图片-剪贴板互操作,请直接使用Win32剪贴板API(OpenClipboard、GetClipboardData、SetClipboardData、CloseClipboard),直到该实现落地。
Clear、GetText、SetText和GetFormat均已完全可用。
方法
Clear
清空剪贴板,移除其上当前的所有格式。
语法:object.Clear
GetData
从剪贴板读取图片数据。返回结果为stdole.StdPicture。
语法:object.GetData( [ Format ] )
- Format
- 可选 ClipboardConstants的成员,选择要检索的图片格式(vbCFBitmap、vbCFDIB、vbCFMetafile、vbCFEMetafile或vbCFPalette)。省略时,实现会选择剪贴板当前持有的最具描述性的格式。
INFO
保留用于与VB6兼容;目前在twinBASIC中尚未实现。
GetFormat
测试剪贴板当前是否包含给定格式的数据。如果包含则返回True,否则返回False。
语法:object.GetFormat( Format )
- Format
- 必需 ClipboardConstants的成员——要探测的格式。
If Clipboard.GetFormat(vbCFFiles) Then
' The clipboard holds a file list (e.g. from Explorer copy)
End IfGetText
从剪贴板读取文本数据。返回String;如果剪贴板当前不包含所请求格式的数据,则返回空字符串。
语法:object.GetText( [ Format ] )
- Format
- 可选 ClipboardConstants的成员,选择要检索的文本格式:vbCFText(默认)、vbCFUnicodeText、vbCFRTF或vbCFLink。
Dim s As String
s = Clipboard.GetText() ' plain text
Dim rtf As String
rtf = Clipboard.GetText(vbCFRTF) ' RTF, if availableSetData
将图片数据放到剪贴板上。
语法:object.SetData Picture [, Format ]
- Picture
- 必需 持有要复制的图片的stdole.StdPicture。
- Format
- 可选 ClipboardConstants的成员——要发布的图片格式。省略时,格式从图片的基础类型推断。
INFO
保留用于与VB6兼容;目前在twinBASIC中尚未实现。
SetText
将文本数据放到剪贴板上。注意,SetText 不会隐式地先清空剪贴板——需显式调用Clear以确保不会在新值旁边残留其他格式的过期数据。
语法:object.SetText Str [, Format ]
- Str
- 必需 要发布的String。
- Format
- 可选 ClipboardConstants的成员——vbCFText(默认)、vbCFUnicodeText、vbCFRTF或vbCFLink。
Clipboard.Clear
Clipboard.SetText "Plain text"
Clipboard.SetText "{\rtf1 \b Bold \b0 plain.}", vbCFRTF ' add an RTF alternative