UDF > Clipboard >


_ClipBoard_SetDataEx

Place des donn�es dans le presse-papiers dans un format sp�cifi� de presse-papiers

#include <Clipboard.au3>
_ClipBoard_SetDataEx ( ByRef $hMemory [, $iFormat = 1] )

Param�tres

$hMemory Handle des donn�es dans le format sp�cifi�. Ce param�tre peut �tre NULL, ce qui indique que la fen�tre fournit des donn�es dans le format sp�cifi� du presse-papiers sur demande.
Si une fen�tre retarde � s'afficher, elle doit traiter les messages $WM_RENDERFORMAT et $WM_RENDERALLFORMATS.
Si cette fonction r�ussit, le syst�me s'approprie l'objet identifi� par le param�tre $hMEMORY.
L'application ne peut �crire ou lib�rer les donn�es une fois que la propri�t� a �t� transf�r�e au syst�me, mais elle peut verrouiller et lire les donn�es jusqu'� ce que la fonction _ClipBoard_Close() soit appel�e.
La m�moire doit �tre d�verrouill�e avant que le presse-papiers soit ferm�.
Si le param�tre $hMEMORY identifie un objet m�moire, l'objet doit avoir �t� allou� � l'aide de la fonction avec le flag $GMEM_MOVEABLE.
$iFormat [optionnel] Sp�cifie un format de presse-papiers:
$CF_TEXT - Format texte
$CF_BITMAP - Handle d'une image bitmap (HBITMAP)
$CF_METAFILEPICT - Handle d'un m�tafichier d'image (METAFILEPICT)
$CF_SYLK - Format Microsoft Symbolic Link (SYLK)
$CF_DIF - Format Data Interchange de Software Arts
$CF_TIFF - Format Tagged Image File
$CF_OEMTEXT - Format texte contenant des caract�res dans le jeu de caract�res OEM
$CF_DIB - Structure de BITMAPINFO suivie par les bits du bitmap
$CF_PALETTE - Handle d'une palette de couleurs
$CF_PENDATA - Donn�es pour les extensions de crayon � Pen Computing
$CF_RIFF - Repr�sente les donn�es audio au format RIFF
$CF_WAVE - Repr�sente les donn�es audio au format WAVE
$CF_UNICODETEXT - Format texte Unicode
$CF_ENHMETAFILE - Handle d'un m�tafichier �tendu (HENHMETAFILE)
$CF_HDROP - Handle d'un type HDROP qui identifie une liste de fichiers
$CF_LOCALE - Handle d'un identifiant de param�tres r�gionaux associ�s au texte du presse-papiers
$CF_DIBV5 - Structure BITMAPV5HEADER suivie par les couleurs du bitmap et des bits du bitmap
$CF_OWNERDISPLAY - Format d'affichage propri�taire
$CF_DSPTEXT - Format d'affichage de texte associ� � un format priv�
$CF_DSPBITMAP - Format d'affichage de bitmap associ� � un format priv�
$CF_DSPMETAFILEPICT - Format d'affichage de m�tafichier d'image associ� � un format priv�
$CF_DSPENHMETAFILE - Format d'affichage de m�tafichier am�lior� associ� � un format priv�

Valeur de retour

Succ�s: Retourne le handle des donn�es
�chec: Retourne 0

Remarque

Le param�tre $iFormat peut identifier un format de presse-papiers enregistr�, ou il peut �tre l'un des formats standards du presse-papiers.
Si une application appelle cette fonction en r�ponse � $WM_RENDERFORMAT ou $WM_RENDERALLFORMATS, l'application ne doit pas utiliser le handle apr�s que cette fonction ait �t� appel�e.
Si une application appelle _ClipBoard_Open() avec un handle NULL, _ClipBoard_Empty() d�finit le propri�taire du presse-papiers � NULL; ce qui fait �chouer la fonction.

En relation

_ClipBoard_Empty, _ClipBoard_GetData, _ClipBoard_Open, _ClipBoard_SetData

Voir aussi

Consultez SetClipboardData dans la Librairie MSDN.

Exemple

#include <Clipboard.au3>
#include <GUIConstantsEx.au3>
#include <Memory.au3>
#include <WinAPIError.au3>
#include <WindowsConstants.au3>

Global $g_idMemo

Example()

Func Example()
    Local $id_SetData, $id_GetData, $hMemory, $hLock, $tData, $sData, $iSize

    ; Cr�er une GUI
    GUICreate("Clipboard", 600, 450)
    $g_idMemo = GUICtrlCreateEdit("", 2, 2, 596, 396, $WS_VSCROLL)
    GUICtrlSetFont($g_idMemo, 9, 400, 0, "Courier New")
    $id_SetData = GUICtrlCreateButton("Set ClipBoard Data", 150, 410, 120, 30)
    $id_GetData = GUICtrlCreateButton("Get ClipBoard Data", 300, 410, 120, 30)
    GUISetState(@SW_SHOW)

    ; Boucle jusqu'� ce que l'utilisateur quitte.
    Local $iMsg = GUIGetMsg()

    While $iMsg <> $GUI_EVENT_CLOSE 
        Switch $iMsg
            Case $id_SetData
                ; Ouvrir le presse-papiers
                If _ClipBoard_Open(0) Then

                    ; Presse-papiers vide
                    If _ClipBoard_Empty() Then

                        ; Cr�e tampon de m�moire global (montre pourquoi l'utilisation de _ClipBoard_SetData est beaucoup plus facile!)
                        $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 a �chou�")
                            $tData = DllStructCreate("char Text[" & $iSize & "]", $hLock)
                            DllStructSetData($tData, "Text", $sData)
                            _MemGlobalUnlock($hMemory)

                            ; Ecrit du texte dans le presse-papiers
                            If Not _ClipBoard_SetDataEx($hMemory, $CF_TEXT) Then _WinAPI_ShowError("_ClipBoard_SetDataEx failed")
                        Else
                            _WinAPI_ShowError("_Mem_GlobalAlloc a �chou�")
                        EndIf

                        ; Ferme le presse-papiers
                        _ClipBoard_Close()
                    Else
                        ; Ferme le presse-papiers
                        _ClipBoard_Close()
                        _WinAPI_ShowError("_ClipBoard_Empty a �chou�")
                    EndIf
                Else
                    _WinAPI_ShowError("_ClipBoard_Open a �chou�")
                EndIf

            Case $id_GetData
                MemoWrite(_ClipBoard_GetData())
        EndSwitch
        $iMsg = GUIGetMsg()
    WEnd
EndFunc   ;==>Example

; Ecrit un message dans memo
Func MemoWrite($sMessage = "")
    GUICtrlSetData($g_idMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite