クリップボード内にあるフォーマットを列挙(T) <TOP>
クリップボード内にあるフォーマットを列挙します。
CountClipboardFormats クリップボード内のフォーマット数を取得
EnumClipboardFormats クリップボード内にあるフォーマットを列挙
OpenClipboard クリップボードをオープン
CloseClipboard クリップボードをクローズ
GetClipboardFormatName クリップボードのフォーマットから名前を取得
テキストをコピーした場合
画像をコピーした場合
'================================================================ '= クリップボード内にあるフォーマットを列挙(T) '= (GetClipboardFormatName.bas) '================================================================ #include "Windows.bi" ' クリップボード内のフォーマット数を取得 Declare Function Api_CountClipboardFormats& Lib "User32" Alias "CountClipboardFormats" () ' クリップボード内にあるフォーマットを列挙 Declare Function Api_EnumClipboardFormats& Lib "User32" Alias "EnumClipboardFormats" (ByVal wFormat&) ' クリップボードをオープン Declare Function Api_OpenClipboard& Lib "User32" Alias "OpenClipboard" (ByVal hWnd&) ' クリップボードをクローズ Declare Function Api_CloseClipboard& Lib "User32" Alias "CloseClipboard" () ' クリップボードのフォーマットから名前を取得 Declare Function Api_GetClipboardFormatName& Lib "User32" Alias "GetClipboardFormatNameA" (ByVal wFormat&, ByVal lpString$, ByVal nMaxCount&) #define CF_TEXT 1 'テキスト形式のデータ。各行は復帰改行(CR-LF)コードで終わる #define CF_BITMAP 2 'ビットマップのデータ(HBITMAP) #define CF_METAFILEPICT 3 'メタファイル画像形式。METAFILEPICT構造体のメモリオブジェクト #define CF_SYLK 4 'Microsoftシンボリックリンク(SYLK)形式のデータ #define CF_DIF 5 'SoftwareArts社のDIFデータ交換形式 #define CF_TIFF 6 'TIFF形式の画像データ #define CF_OEMTEXT 7 'OEM 文字セットの文字を持つテキスト形式データ #define CF_DIB 8 '構造体とビットマップビットからなるメモリオブジェクト #define CF_PALETTE 9 'カラーパレットのハンドル #define CF_PENDATA 10 'Windowsのペン拡張機能のためのデータ #define CF_RIFF 11 'RIFF 形式の音声データ #define CF_WAVE 12 'WAVE 形式の音声データ #define CF_UNICODETEXT 13 'Unicodeのテキスト形式 #define CF_ENHMETAFILE 14 '拡張メタファイルのデータです(HENHMETAFILE) #define CF_HDROP 15 'HDROP型 #define CF_LOCALE 16 'テキストデータのロケールIDハンドル #define CF_DIBV5 17 '構造体とビットマップビットからなるメモリオブジェクト(Windows2000) Var Shared List1 As Object Var Shared Text1 As Object Var Shared Button1 As Object List1.Attach GetDlgItem("List1") : List1.SetFontSize 12 Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 12 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 12 '================================================================ '= '================================================================ Declare Function FormatName(lFormatId As Long ) As String Function FormatName(lFormatId As Long ) As String Var lSize As Long Var sBuf As String Var Ret As Long If (lFormatId >= 1 And lFormatId <= 17) Then Select Case lFormatId Case CF_TEXT FormatName = "CF_TEXT : " & "テキスト形式のデータ" Case CF_BITMAP FormatName = "CF_BITMAP : " & "ビットマップ形式のデータ(HBITMAP)" Case CF_METAFILEPICT FormatName = "CF_METAFILEPICT: " & "メタファイル画像形式" Case CF_SYLK FormatName = "CF_SYLK : " & "シンボリックリンク(SYLK)形式のデータ" Case CF_DIF FormatName = "CF_DIF : " & "SoftwareArts社のDIFデータ交換形式" Case CF_TIFF FormatName = "CF_TIFF : " & "TIFF形式の画像データ" Case CF_OEMTEXT FormatName = "CF_OEMTEXT : " & "OEM文字セットの文字を持つテキスト形式データ" Case CF_DIB FormatName = "CF_DIB : " & "構造体とビットマップビットからなる形式データ" Case CF_PALETTE FormatName = "CF_PALETTE : " & "カラーパレットのハンドル" Case CF_PENDATA FormatName = "CF_PENDATA : " & "Windowsのペン拡張機能のためのデータ" Case CF_RIFF FormatName = "CF_RIFF : " & "RIFF形式の音声データ" Case CF_WAVE FormatName = "CF_WAVE : " & "WAVE形式の音声データ" Case CF_UNICODETEXT FormatName = "CF_UNICODETEXT : " & "Unicodeのテキスト形式" Case CF_ENHMETAFILE FormatName = "CF_ENHMETAFILE : " & "拡張メタファイルのデータ" Case CF_HDROP FormatName = "CF_HDROP : " & "ファイルリスト(HDROP型)" Case CF_LOCALE FormatName = "CF_LOCALE : " & "テキストデータのロケールIDハンドル" Case CF_DIBV5 FormatName = "CF_DIBV5 : " & "構造体とビットマップビットからなる形式データ(Windows2000)" End Select Else lSize = 255 sBuf = String$(lSize, 0) Ret = Api_GetClipboardFormatName(lFormatId, sBuf, lSize) If Ret <> 0 Then FormatName = "PRIVATE : " & Left$(sBuf, Ret) Else FormatName = "Unknown : " & Left$(sBuf, Ret) End If End If End Function '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var Ret As Long List1.Resetcontent If (Api_OpenClipboard(GethWnd)) Then Ret = Api_EnumClipboardFormats(0) If (Ret <> 0) Then Do List1.AddString FormatName(Ret) Ret = Api_EnumClipboardFormats(Ret) Loop While Ret <> 0 End If End If Ret = Api_CloseClipboard Text1.SetWindowText Trim$(Str$(Api_CountClipboardFormats)) & "フォーマット" End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End