如何用EnumClipboardFormats判断剪贴板中是否有数据?

api函数EnumClipboardFormats可以枚举剪贴板中已有的数据格式,它的语法如下:

UINT WINAPI EnumClipboardFormats(

  _In_ UINT format

);

当第一次调用EnumClipboardFormats函数时,把format参数设置为0,它的返回值为剪贴板中第一个数据格式,如果剪贴板中没有数据,则返回0。如果要继续枚举其它的剪贴板数据格式,则把format参数设置为上次的函数返回值,直到枚举结束,EnumClipboardFormats函数的返回值为0。

根据以上的分析,如果第一调用EnumClipboardFormats函数时,它的返回值为0,则表示剪贴板中没有数据。如果有数据,至少也会在第二次调用EnumClipboardFormats函数的时候才会返回0。

以下是在vba中用EnumClipboardFormats判断剪贴板中是否有数据的代码:

Declare Function EnumClipboardFormats Lib "user32" (ByVal wFormat As Long) As Long
Declare Function OpenClipboard Lib "user32" (ByVal hWnd As Long) As Long
Declare Function CloseClipboard Lib "user32" () As Long
Sub QQ1722187970()
    Dim iFormat
    OpenClipboard (0)
    iFormat = EnumClipboardFormats(0)
    If iFormat = 0 Then
        MsgBox "当前剪贴板无数据!!!"
    Else
        MsgBox "当前剪贴板有数据!!!"
    End If
    CloseClipboard
End Sub

 

       

发表评论