Skip to content

Clipboard 类

Clipboard 类封装了系统剪贴板——即 Win32 进程间复制粘贴API——并将其作为单例对象公开。代码通过它可以读写文本、查询当前可用的格式,以及(最终——参见图片数据注意事项)读写图片。

Clipboard 不可创建:每个进程只有一个实例,由运行时拥有,并通过Global应用对象的Clipboard属性公开。代码无需限定即可访问:

vb
' Copy
Clipboard.Clear
Clipboard.SetText "Hello, world!"

' Paste
If Clipboard.GetFormat(vbCFText) Then
    txtEditor.Text = Clipboard.GetText()
End If

格式

剪贴板内容以格式标记——文本、位图、文件、富文本等。ClipboardConstants枚举列出了预定义的格式:

常量含义
vbCFText1ANSI纯文本。
vbCFBitmap2DDB(设备相关位图)。
vbCFMetafile3Windows图元文件(WMF)。
vbCFDIB8DIB(设备无关位图)。
vbCFPalette9调色板。
vbCFUnicodeText13UTF-16纯文本。
vbCFEMetafile14增强型图元文件(EMF)。
vbCFFiles15文件路径列表(CF_HDROP)。
vbCFLink&HFFFFBF00DDE链接(旧版OLE-1链接源)。
vbCFRTF&HFFFFBF01富文本格式。

GetText / SetText方法接受一个可选的Format参数,限制为文本类子集(vbCFTextvbCFUnicodeTextvbCFRTFvbCFLink)。GetData / SetData方法处理图片,仅限于位图和图元文件格式。

图片数据

图片方法——GetDataSetData——已声明但尚未连接。

INFO

GetDataSetData保留用于与VB6兼容;目前在twinBASIC中尚未实现。对于图片-剪贴板互操作,请直接使用Win32剪贴板API(OpenClipboardGetClipboardDataSetClipboardDataCloseClipboard),直到该实现落地。

ClearGetTextSetTextGetFormat均已完全可用。

方法

Clear

清空剪贴板,移除其上当前的所有格式。

语法:object.Clear

GetData

从剪贴板读取图片数据。返回结果为stdole.StdPicture

语法:object.GetData( [ Format ] )

Format
可选 ClipboardConstants的成员,选择要检索的图片格式(vbCFBitmapvbCFDIBvbCFMetafilevbCFEMetafilevbCFPalette)。省略时,实现会选择剪贴板当前持有的最具描述性的格式。

INFO

保留用于与VB6兼容;目前在twinBASIC中尚未实现。

GetFormat

测试剪贴板当前是否包含给定格式的数据。如果包含则返回True,否则返回False

语法:object.GetFormat( Format )

Format
必需 ClipboardConstants的成员——要探测的格式。
vb
If Clipboard.GetFormat(vbCFFiles) Then
    ' The clipboard holds a file list (e.g. from Explorer copy)
End If

GetText

从剪贴板读取文本数据。返回String;如果剪贴板当前不包含所请求格式的数据,则返回空字符串。

语法:object.GetText( [ Format ] )

Format
可选 ClipboardConstants的成员,选择要检索的文本格式:vbCFText(默认)、vbCFUnicodeTextvbCFRTFvbCFLink
vb
Dim s As String
s = Clipboard.GetText()                  ' plain text
Dim rtf As String
rtf = Clipboard.GetText(vbCFRTF)         ' RTF, if available

SetData

将图片数据放到剪贴板上。

语法:object.SetData Picture [, Format ]

Picture
必需 持有要复制的图片的stdole.StdPicture
Format
可选 ClipboardConstants的成员——要发布的图片格式。省略时,格式从图片的基础类型推断。

INFO

保留用于与VB6兼容;目前在twinBASIC中尚未实现。

SetText

将文本数据放到剪贴板上。注意,SetText 不会隐式地先清空剪贴板——需显式调用Clear以确保不会在新值旁边残留其他格式的过期数据。

语法:object.SetText Str [, Format ]

Str
必需 要发布的String
Format
可选 ClipboardConstants的成员——vbCFText(默认)、vbCFUnicodeTextvbCFRTFvbCFLink
vb
Clipboard.Clear
Clipboard.SetText "Plain text"
Clipboard.SetText "{\rtf1 \b Bold \b0 plain.}", vbCFRTF   ' add an RTF alternative

twinBASIC及其LOGO版权为作者"韦恩"所有