Places data on the clipboard in a specified clipboard format
#include <Clipboard.au3>
_ClipBoard_SetDataEx ( ByRef $hMemory [, $iFormat = 1] )
$hMemory | Handle to the data in the specified format. This parameter can be NULL, indicating that the window provides data in the specified clipboard format upon request. If a window delays rendering, it must process the $WM_RENDERFORMAT and $WM_RENDERALLFORMATS messages. If this function succeeds, the system owns the object identified by the $hMemory parameter. The application may not write to or free the data once ownership has been transferred to the system, but it can lock and read from the data until the _ClipBoard_Close() function is called. The memory must be unlocked before the clipboard is closed. If the $hMemory parameter identifies a memory object, the object must have been allocated using the function with the $GMEM_MOVEABLE flag. |
$iFormat | [optional] Specifies a clipboard format: $CF_TEXT - Text format $CF_BITMAP - Handle to a bitmap (HBITMAP) $CF_METAFILEPICT - Handle to a metafile picture (METAFILEPICT) $CF_SYLK - Microsoft Symbolic Link (SYLK) format $CF_DIF - Software Arts' Data Interchange Format $CF_TIFF - Tagged image file format $CF_OEMTEXT - Text format containing characters in the OEM character set $CF_DIB - BITMAPINFO structure followed by the bitmap bits $CF_PALETTE - Handle to a color palette $CF_PENDATA - Data for the pen extensions to Pen Computing $CF_RIFF - Represents audio data in RIFF format $CF_WAVE - Represents audio data in WAVE format $CF_UNICODETEXT - Unicode text format $CF_ENHMETAFILE - Handle to an enhanced metafile (HENHMETAFILE) $CF_HDROP - Handle to type HDROP that identifies a list of files $CF_LOCALE - Handle to the locale identifier associated with text in the clipboard $CF_DIBV5 - BITMAPV5HEADER structure followed by bitmap color and the bitmap bits $CF_OWNERDISPLAY - Owner display format $CF_DSPTEXT - Text display format associated with a private format $CF_DSPBITMAP - Bitmap display format associated with a private format $CF_DSPMETAFILEPICT - Metafile picture display format associated with a private format $CF_DSPENHMETAFILE - Enhanced metafile display format associated with a private format |
Success: | The handle to the data |
Failure: | 0 |
The $iFormat parameter can identify a registered clipboard format, or it can be one of the standard clipboard formats.
If an application calls this function in response to $WM_RENDERFORMAT or $WM_RENDERALLFORMATS, the application should not use the handle after this function has been called.
If an application calls _ClipBoard_Open() with a NULL handle, _ClipBoard_Empty() sets the clipboard owner to NULL; this causes this function to fail.
_ClipBoard_Empty, _ClipBoard_GetData, _ClipBoard_Open, _ClipBoard_SetData
Search SetClipboardData in MSDN Library.
#include <Clipboard.au3> #include <GUIConstantsEx.au3> #include <WinAPIError.au3> #include <WindowsConstants.au3> Global $g_idMemo Example() Func Example() ; Create GUI Local $hGUI = GUICreate("Clipboard Get/Set DataEx (v" & @AutoItVersion & ")", 600, 450) $g_idMemo = GUICtrlCreateEdit("", 2, 2, 596, 396, $WS_VSCROLL) GUICtrlSetFont($g_idMemo, 9, 400, 0, "Courier New") Local $id_SetData = GUICtrlCreateButton("Set ClipBoard Data", 150, 410, 120, 30) Local $id_GetData = GUICtrlCreateButton("Get ClipBoard Data", 300, 410, 120, 30) GUISetState(@SW_SHOW) ; Loop until the user exits. Local $hMemory, $tData While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop Case $id_SetData _ClipBoard_SetData("ClipBoard Library") Case $id_GetData ; Open the clipboard If _ClipBoard_Open($hGUI) Then ; Read clipboard text $hMemory = _ClipBoard_GetDataEx($CF_TEXT) If $hMemory = 0 Then _WinAPI_ShowError("_ClipBoard_GetDataEx failed") $tData = DllStructCreate("char Text[8192]", $hMemory) MemoWrite(DllStructGetData($tData, "Text")) ; Close the clipboard _ClipBoard_Close() Else _WinAPI_ShowError("_ClipBoard_Open failed") EndIf EndSwitch WEnd EndFunc ;==>Example ; Write message to memo Func MemoWrite($sMessage = "") GUICtrlSetData($g_idMemo, $sMessage & @CRLF, 1) EndFunc ;==>MemoWrite
#include <Clipboard.au3> #include <GUIConstantsEx.au3> #include <Memory.au3> #include <WinAPIError.au3> #include <WindowsConstants.au3> Global $g_idMemo Example() Func Example() ; Create GUI GUICreate("Clipboard Get/Set DataEx (v" & @AutoItVersion & ")", 600, 450) $g_idMemo = GUICtrlCreateEdit("", 2, 2, 596, 396, $WS_VSCROLL) GUICtrlSetFont($g_idMemo, 9, 400, 0, "Courier New") Local $id_SetData = GUICtrlCreateButton("Set ClipBoard Data", 150, 410, 120, 30) Local $id_GetData = GUICtrlCreateButton("Get ClipBoard Data", 300, 410, 120, 30) GUISetState(@SW_SHOW) ; Loop until the user exits. Local $hMemory, $hLock, $tData, $sData, $iSize While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop Case $id_SetData ; Open clipboard If _ClipBoard_Open(0) Then ; Empty clipboard If _ClipBoard_Empty() Then ; Create global memory buffer (show why using _ClipBoard_SetData is MUCH easier!) $sData = "Hello from AutoIt" $iSize = StringLen($sData) + 1 $hMemory = _MemGlobalAlloc($iSize, $GHND) If $hMemory <> 0 Then $hLock = _MemGlobalLock($hMemory) If $hLock = 0 Then _WinAPI_ShowError("_Mem_GlobalLock failed") $tData = DllStructCreate("char Text[" & $iSize & "]", $hLock) DllStructSetData($tData, "Text", $sData) _MemGlobalUnlock($hMemory) ; Write clipboard text If Not _ClipBoard_SetDataEx($hMemory, $CF_TEXT) Then _WinAPI_ShowError("_ClipBoard_SetDataEx failed") Else _WinAPI_ShowError("_Mem_GlobalAlloc failed") EndIf ; Close clipboard _ClipBoard_Close() Else ; Close clipboard _ClipBoard_Close() _WinAPI_ShowError("_ClipBoard_Empty failed") EndIf Else _WinAPI_ShowError("_ClipBoard_Open failed") EndIf Case $id_GetData MemoWrite(_ClipBoard_GetData()) EndSwitch WEnd EndFunc ;==>Example ; Write message to memo Func MemoWrite($sMessage = "") GUICtrlSetData($g_idMemo, $sMessage & @CRLF, 1) EndFunc ;==>MemoWrite