クリップボード内にあるフォーマットを列挙(U)          <TOP>


クリップボード内にあるフォーマットを列挙します。

EnumClipboardFormats クリップボード内にあるフォーマットを列挙

OpenClipboard クリップボードをオープン

CloseClipboard クリップボードをクローズ

GetClipboardFormatName クリップボードのフォーマットから名前を取得

 

テキストをコピーした場合

画像をコピーした場合

 

'================================================================
'= クリップボード内のフォーマットを列挙(U)
'=    (GetClipboardFormatName2.bas)
'================================================================
#include "Windows.bi"

#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_FILES 15                     'FILES
#define CF_HDROP 15                     'HDROP型
#define CF_LOCALE 16                    'テキストデータのロケールIDハンドル
#define CF_DIBV5 17                     '

#define CF_OWNERDISPLAY &H80            'オーナー表示形式
#define CF_DSPTEXT &H81                 'プライベートな形式のテキストデータ
#define CF_DSPBITMAP &H82               'プライベートな形式のビットマップデータ
#define CF_DSPMETAFILEPICT &H83         'プライベートな形式の拡張メタファイルデータ
#define CF_DSPENHMETAFILE &H8E          'プライベートな形式の拡張メタファイルデータ

#define ERROR_SUCCESS &H0               '正常終了の戻り値を示す
#define LB_SETTABSTOPS &H192            'リストボックス内のタブストップを設定する

' クリップボードをオープン
Declare Function Api_OpenClipboard& Lib "user32" Alias "OpenClipboard" (ByVal hWnd&)

' クリップボード内にあるフォーマットを列挙
Declare Function Api_EnumClipboardFormats& Lib "user32" Alias "EnumClipboardFormats" (ByVal wFormat&)

' クリップボードのフォーマットから名前を取得
Declare Function Api_GetClipboardFormatName& Lib "user32" Alias "GetClipboardFormatNameA" (ByVal wFormat&, ByVal lpString$, ByVal nMaxCount&)

' クリップボードをクローズ
Declare Function Api_CloseClipboard& Lib "user32" Alias "CloseClipboard" ()

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 14
Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Function GetCBTypeDesc(ByVal nFormat As Long) As String
Function GetCBTypeDesc(ByVal nFormat As Long) As String
    Var cbBuff As Long
    Var Buff As String

    Select Case nFormat
       Case CF_TEXT
          Buff = "CF_TEXT"
       Case CF_BITMAP
          Buff = "CF_BITMAP"
       Case CF_METAFILEPICT
          Buff = "CF_METAFILEPICT"
       Case CF_SYLK
          Buff = "CF_SYLK"
       Case CF_DIF
          Buff = "CF_DIF"
       Case CF_TIFF
          Buff = "CF_TIFF"
       Case CF_OEMTEXT
          Buff = "CF_OEMTEXT"
       Case CF_DIB
          Buff = "CF_DIB"
       Case CF_PALETTE
          Buff = "CF_PALETTE"
       Case CF_PENDATA
          Buff = "CF_PENDATA"
       Case CF_RIFF
          Buff = "CF_RIFF"
       Case CF_WAVE
          Buff = "CF_WAVE"
       Case CF_UNICODETEXT
          Buff = "CF_UNICODETEXT"
       Case CF_ENHMETAFILE
          Buff = "CF_ENHMETAFILE"
       Case CF_FILES, CF_HDROP
          Buff = "CF_FILES/CF_HDROP" 
       Case CF_LOCALE
          Buff = "CF_LOCALE"
       Case CF_DIBV5
          Buff = "CF_DIBV5"
       Case CF_OWNERDISPLAY
          Buff = "CF_OWNERDISPLAY"
       Case CF_DSPTEXT
          Buff = "CF_DSPTEXT"
       Case CF_DSPBITMAP
          Buff = "CF_DSPBITMAP"
       Case CF_DSPMETAFILEPICT
          Buff = "CF_DSPMETAFILEPICT"
       Case CF_DSPENHMETAFILE
          Buff = "CF_DSPENHMETAFILE"
       Case Else
          Buff = String$(256, Chr$(0))
          cbBuff = Len(Buff)
         
          If Api_GetClipboardFormatName(nFormat, Buff, cbBuff) = 0 Then
              Buff = "Unknown : " & Str$(nFormat)
          Else
              Buff = "Private : " & Buff
          End If
    End Select
   
    GetCBTypeDesc = Buff
End Function

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var fmt As Long
   
    List1.ResetContent
    If Api_OpenClipboard(0) <> 0 Then
        Do
            fmt = Api_EnumClipboardFormats(fmt)
         
            If fmt > ERROR_SUCCESS Then
                List1.AddString GetCBTypeDesc(fmt)
            End If
        Loop Until fmt = ERROR_SUCCESS
   
        Ret = Api_CloseClipboard
    End If 

    Text1.SetWindowText Str$(List1.GetCount) & "フォーマット"
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End