前沿拓展:
ultraedit 32破解版
何必用那呢~~用個免費VIM不是更好~~
大家好,我們今日講解"VBA信息獲取與處理"教程中第十二個專題"VBA中剪貼板(Clipboard)的應(yīng)用"的第四節(jié)"剪貼板中的數(shù)據(jù)格式(Clipboard Formats)",這個專題是非常有用的知識點,希望大家能掌握利用。
第四節(jié) 剪貼板中的數(shù)據(jù)格式(Clipboard Formats)
在前面的講解中我們已經(jīng)了解到使用MSForms.DataObject可以很輕松地提取剪貼板中的文本數(shù)據(jù),但DataObject目前只支持文本**作,所以它的GetFromClipboard方法只能用于讀取剪貼板內(nèi)文本。而通過剪貼板API函數(shù),我們可以使用剪貼板內(nèi)全部格式的數(shù)據(jù),同樣是文本數(shù)據(jù)我們也可以利用GetClipboardData(CF_TEXT)來獲取。那么在剪貼板中處理以文本格式存在的內(nèi)存對象外,還有哪些格式呢?我們這講就來討論一下。
1 數(shù)據(jù)格式的介紹
所謂數(shù)據(jù)格式(data format)是描述數(shù)據(jù)保存在文件或記錄中的規(guī)則??梢允亲址问降奈谋靖袷剑蚨M制數(shù)據(jù)格式的壓縮格式。字符形式的文本格式占用的存貯空間多但透明度高,二進制數(shù)形式的壓縮格式占用的存貯空間少但缺少透明度。
建立數(shù)據(jù)格式是為了便于更好地儲存、分析、交換和顯示數(shù)據(jù)給用戶。我們知道,在計算機中,所有數(shù)據(jù)都是以0或1構(gòu)成的位構(gòu)成的,在大多數(shù)的編程語言中,數(shù)據(jù)的最小單位是字節(jié),它由8個位構(gòu)成,可以表示0-255之間256個數(shù)值,要用這256個數(shù)值表示各種各樣的信息,比如文字、圖形、音頻、視頻等,就需要給代表每種信息的一串字節(jié)規(guī)定一個固定的結(jié)構(gòu)和擺放規(guī)則,否則如果只是把所有數(shù)據(jù)羅列到一起,就會帶來解析上的困難。如果這種結(jié)構(gòu)和規(guī)則被普遍接受,它就會成為一種通用的數(shù)據(jù)格式。
通常每種數(shù)據(jù)格式都會包含一個簡單的易于識別的字節(jié)特征,比如我們的磁盤中的各種文件,就有文本格式、位圖格式、超文本格式等成百上千種格式,假如我們用UltraEdit之類十六進制編輯器打開一個沒有后綴名的文件,如果發(fā)現(xiàn)它的前四個字節(jié)是47 49 46 38("GIF8"),它很有可能是一個gif格式圖片,假如我們對gif格式的規(guī)定有全面的了解,那不但可以100%判斷它是或不是一個有效的gif格式圖片,還能把它所代表的圖形顯示到屏幕上。對于用戶來說,對不同格式的文件可以使用相應(yīng)的程序打開,對于程序來說,對不同格式的數(shù)據(jù)可以使用相應(yīng)的解析方式加以解讀,從而挖掘其中攜帶的信息。
2 剪貼板中的數(shù)據(jù)格式
剪貼板里可以同時存放多種格式的數(shù)據(jù),我們將他們統(tǒng)稱為剪貼板格式(Clipboard Formats)。為了區(qū)別各種格式,windows給每種剪貼板格式都分配了一個特有的長整型數(shù)字,我們稱作剪貼板格式編號(Clipboard Format Number),同時,為了便于人們記憶和使用,除了少數(shù)幾個通用的標(biāo)準(zhǔn)格式,大部分?jǐn)?shù)據(jù)格式還對應(yīng)一個英文名稱,叫作剪貼板格式名稱(Clipboard Format Name),這個名稱是大小寫敏感的,即CSV和Csv在剪貼板中代表兩種不同的格式,它們的剪貼板格式編號也不會相同。剪貼板格式的編號和名稱是由Windows系統(tǒng)分配和管理的,對于常用的格式,windows對它們的編號進行了預(yù)定義,這些格式被稱為標(biāo)準(zhǔn)格式或預(yù)定義格式(Standard/Predefined Clipboard Formats)。那么在剪切板中都有哪些數(shù)據(jù)格式呢?我這里列出一下常用的格式:
1) Const CF_TEXT = 1 文本格式,以chr(0)作為字符串結(jié)束標(biāo)志
2) Const CF_BITMAP = 2 Bitmap對象
3) Const CF_METAFILEPICT = 3 Metafile Picture格式
4) Const CF_SYLK = 4 微軟符號連接格式(Microsoft Symbolic Link Format)
5)Const CF_DIF = 5 Software Arts' Data Interchange Format.
6) Const CF_TIFF = 6 標(biāo)簽圖像文件格式(TIFF)
7) Const CF_OEMTEXT = 7 包含OEM字符集的文本格式
8) Const CF_DIB =8 設(shè)備無關(guān)位圖(DIB)格式,前面是一個BITMAPINFO結(jié)構(gòu),后面是圖像像素位
9) Const CF_PALETTE = 9 調(diào)色板對象格式,當(dāng)程序向剪貼板中放入一幅使用調(diào)色板的位圖時,它需要同時將調(diào)色板也放入剪貼板
10) Const CF_PENDATA =10 手寫筆數(shù)據(jù)
11) Const CF_RIFF =11 比標(biāo)準(zhǔn)CF_WAVE所能代表的音頻格式更加復(fù)雜的音頻格式 12) Const CF_WAVE = 12 標(biāo)準(zhǔn)音頻格式(如11kHz或22kHz脈沖編碼調(diào)制)的數(shù)據(jù) 13) Const CF_UNICODETEXT =13 Unicode文本格式
14) Const CF_ENHMETAFILE =14 增強圖元文件格式
15) Const CF_HDROP = 15 文件名列表
16) Const CF_LOCALE = 16 與剪貼板內(nèi)文本相關(guān)的區(qū)域選項的ID
17)Const CF_MAX =17
如果應(yīng)用程序需要向剪貼板中放入的數(shù)據(jù)不能以上述格式表示或者不能轉(zhuǎn)化為上述格式時,它可以使用注冊剪貼板格式(Registered Clipboard Formats),也就是說,它可以自行為這個數(shù)據(jù)格式定義一個名稱,第二使用RegisterClipboardFormat函數(shù)注冊這個名稱,如果注冊成功,它將得到這個新建的剪貼板格式對應(yīng)的編號。
3 判斷剪貼板中的數(shù)據(jù)格式的函數(shù)IsClipboardFormatAvailable
如果一個應(yīng)用程序只對剪貼板內(nèi)格式名稱為TEXT的數(shù)據(jù)感興趣,并且它已經(jīng)獲得了TEXT剪貼板格式的編號,1,那判斷它自己是否可以使用粘貼命令的最簡單的辦法是使用IsClipboardFormatAvailable(1),第二根據(jù)返回值確定剪貼板內(nèi)是否包含TEXT格式數(shù)據(jù),這個函數(shù)定義如下:
Declare Function IsClipboardFormatAvailable Lib "user32" (ByValwFormat As Long) As Long
作用: 判斷剪貼板內(nèi)是否存在指定格式的數(shù)據(jù)
參數(shù): wFormat標(biāo)準(zhǔn)剪貼板格式或注冊剪貼板格式的編號
返回值:如果剪貼板中存在相應(yīng)格式的數(shù)據(jù),則返回一個非0值否則返回0
4 剪貼板中的所有數(shù)據(jù)格式的提取
使用EnumClipBoardFormats函數(shù)獲取剪貼板內(nèi)所有可用格式的編號,第二使用GetClipboardFormatName函數(shù)取得該編號對應(yīng)的格式名稱。
語法及聲明:Declare Function EnumClipboardFormats Lib "user32" (ByValwFormat As Long) As Long
意義:這個函數(shù)可以列舉出當(dāng)前剪貼板內(nèi)所有可用的數(shù)據(jù)格式
參數(shù):wFormat代表剪貼板內(nèi)已知可用的標(biāo)準(zhǔn)剪貼板格式或注冊剪貼板格式的編號
在列舉過程最開始,向函數(shù)傳入0值,函數(shù)將返回第一個可用的剪貼板格式編號,將返回值傳給下一次函數(shù)調(diào)用,可以得到下一個可用的剪貼板格式編號。
如果調(diào)用成功,則返回wFormat之后第一個可用的剪貼板格式編號,如果調(diào)用失敗,則返回0。
這個函數(shù)需要事先使用OpenClipboard成功打開剪貼板。這個函數(shù)返回的剪貼板格式的順序與放入剪貼板數(shù)據(jù)時的順序一樣。
好了,這講就講到這里,關(guān)于剪貼板在VBA中的**作,我們至少關(guān)注文本的內(nèi)容就好,其他的內(nèi)容大家可以參考必要的資料。
拓展知識:
原創(chuàng)文章,作者:九賢生活小編,如若轉(zhuǎn)載,請注明出處:http://m.xiesong.cn/69724.html