函数参考


_ClipBoard_GetDataEx

使用返回剪切板中指定格式的数据

#Include <Clipboard.au3>
_ClipBoard_GetDataEx([$iFormat = 1])

参数

$iFormat [可选参数] 指定剪切板格式:
$CF_TEXT - 文本格式
$CF_BITMAP - 位图句柄 (HBITMAP)
$CF_METAFILEPICT - 图片的图元文件句柄 (METAFILEPICT)
$CF_SYLK - Microsoft 符号链接格式 (SYLK)
$CF_DIF - 软件艺术数据( Arts' Data )交换格式
$CF_TIFF - 标记图像文件格式
$CF_OEMTEXT - OEM 字符集中包含字符的文本格式
$CF_DIB - 位图的 BITMAPINFO 结构
$CF_PALETTE - 调色板句柄
$CF_PENDATA - 扩展画笔计算数据
$CF_RIFF - RIFF音频数据格式
$CF_WAVE - WAVE音频数据格式
$CF_UNICODETEXT - Unicode 文本格式
$CF_ENHMETAFILE - 增强型图元文件句柄 (HENHMETAFILE)
$CF_HDROP - 识别文件列表的 HDROP 的句柄
$CF_LOCALE - 与剪贴板文本有关的本地认证句柄
$CF_DIBV5 - 带位图颜色和图位的 BITMAPV5HEADER 结构
$CF_OWNERDISPLAY - 属主显示格式
$CF_DSPTEXT - 与私有格式相关的文字显示格式
$CF_DSPBITMAP - 与私有格式相关的位图显示格式
$CF_DSPMETAFILEPICT - 与私有格式相关的图元显示格式
$CF_DSPENHMETAFILE - 与私有格式相关的增强型图元显示格式

返回值

成功: 返回指定格式的剪贴板对象句柄
失败: 返回 0

注意/说明

剪贴板控制 _ClipBoard_GetData 函数返回的句柄, 而不是应用程序.
应用程序必须不释放句柄, 也不锁定. 您应该立即复制数据.
在 _ClipBoard_Empty 或 _ClipBoard_Close 函数被调用之后,
或同一剪贴板格式调用 _ClipBoard_SetData 函数之后,应用程序不能使用句柄.

相关

_ClipBoard_SetData, _ClipBoard_GetData

详情参考

在MSDN中搜索


示例/演示


#include <GUIConstantsEx.au3>
#include <Clipboard.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>

Global $iMemo

_Main()

Func _Main()
    Local $hGUI, $btn_SetData, $btn_GetData, $hMemory, $tData

    ; 创建 GUI
    $hGUI = GUICreate("Clipboard", 600, 450)
    $iMemo = GUICtrlCreateEdit("", 2, 2, 596, 396, $WS_VSCROLL)
    GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
    $btn_SetData = GUICtrlCreateButton("Set ClipBoard Data", 150, 410, 120, 30)
    $btn_GetData = GUICtrlCreateButton("Get ClipBoard Data", 300, 410, 120, 30)
    GUISetState()

    ; 循环直到用户退出
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
            Case $btn_SetData
                _ClipBoard_SetData("ClipBoard Library")
            Case $btn_GetData
                ; 打开剪贴板
                If _ClipBoard_Open($hGUI) Then

                ; 读取剪贴板文本
                    $hMemory = _ClipBoard_GetDataEx($CF_TEXT)
                    If $hMemory = 0 Then _WinAPI_ShowError("_ClipBoard_GetDataEx failed")
                    $tData = DllStructCreate("char Text[8192]", $hMemory)
                    MemoWrite(DllStructGetData($tData, "Text"))

                ; 关闭剪贴板
                    _ClipBoard_Close()
                Else
                    _WinAPI_ShowError("_ClipBoard_Open 失败")
                EndIf
        EndSwitch
    WEnd

EndFunc   ;==>_Main

; 写入消息到 memo
Func MemoWrite($sMessage = "")
    GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite