指定したクリップボード形式のデータをクリップボードに配置します。
#Include <Clipboard.au3>
_ClipBoard_SetDataEx(ByRef $hMemory [, $iFormat = 1])
パラメータ
$hMemory | 指定した形式のデータのハンドル。このパラメータはNULLにでき、その場合はウィンドウが要求に応じて指定されたクリップボード形式のデータを提供します。ウィンドウのレンダリングが遅延する場合、$WM_RENDERFORMATメッセージと$WM_RENDERALLFORMATSメッセージを処理しています。この関数が成功した場合、システムは$hMemoryパラメータで識別されるオブジェクトを所有するようになります。一度、所有権がシステムに委譲されるとアプリケーションはデータの書き込み、解放ができなくなります。ただし、_ClipBoard_Close関数が呼ばれるまではデータのロックと読み取りは可能です。クリップボードが閉じれる前にメモリーのロック解除をおこなう必要があります。$hMemoryパラメータでメモリーオブジェクトを識別している場合、$GMEM_MOVEABLEフラグと関数を使用してオブジェクトを割り当てる必要があります。 |
$iFormat | [オプション]クリップボード形式を指定します $CF_TEXT - テキスト形式 $CF_BITMAP - ビットマップのハンドル(HBITMAP) $CF_METAFILEPICT - メタファイル画像のハンドル(METAFILEPICT) $CF_SYLK - Microsoft Symbolic Link (SYLK) 形式 $CF_DIF - Software Arts' Data Interchange Format $CF_TIFF - タグイメージファイル形式 $CF_OEMTEXT - OEM文字セットの文字を含むテキスト形式 $CF_DIB - ビットマップビットが続くBITMAPINFO構造体 $CF_PALETTE - 色パレットのハンドル $CF_PENDATA - Pen Computingのペン拡張機能用データ $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 |
注意
$iFormatパラメータによって登録されているクリップボード形式を識別しますが、一致するものがない場合、標準のクリップボード形式になります。
関連
_ClipBoard_Empty, _ClipBoard_GetData, _ClipBoard_Open, _ClipBoard_SetData
こちらも参照
MSDNライブラリでSetClipboardDataを検索して下さい。
例
#include <GuiConstantsEx.au3>
#include <ClipBoard.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
Opt('MustDeclareVars', 1)
Global $iMemo
_Main()
Func _Main()
Local $hGUI, $btn_SetData, $btn_GetData, $hMemory, $hLock, $tData, $sData, $iSize
; 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
; クリップボードを開く
If Not _ClipBoard_Open (0) Then _WinAPI_ShowError ("_ClipBoard_Open failed")
; クリップボードを空にする
If Not _ClipBoard_Empty () Then _WinAPI_ShowError ("_ClipBoard_Empty failed")
; グローバルなメモリバッファを作成 (_ClipBoard_SetDataの方がずっと簡単!)
$sData = "Hello from AutoIt"
$iSize = StringLen($sData) + 1
$hMemory = _MemGlobalAlloc ($iSize, $GHND)
If $hMemory = 0 Then _WinAPI_ShowError ("_Mem_GlobalAlloc failed")
$hLock = _MemGlobalLock ($hMemory)
If $hLock = 0 Then _WinAPI_ShowError ("_Mem_GlobalLock failed")
$tData = DllStructCreate("char Text[" & $iSize & "]", $hLock)
DllStructSetData($tData, "Text", $sData)
_MemGlobalUnlock ($hMemory)
; クリップボードテキスト書き込み
If Not _ClipBoard_SetDataEx ($hMemory, $CF_TEXT) Then _WinAPI_ShowError ("_ClipBoard_SetDataEx failed")
; クリップボードを閉じる
_ClipBoard_Close ()
Case $btn_GetData
MemoWrite(_ClipBoard_GetData ())
EndSwitch
WEnd
EndFunc ;==>_Main
; メモにメッセージを書き込む
Func MemoWrite($sMessage = "")
GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc ;==>MemoWrite