一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

監(jiān)視剪切版

 aaie_ 2011-11-10
Windows使用剪貼板觀察器和觀察鏈。剪貼板觀察器是一個(gè)顯示剪貼板當(dāng)前內(nèi)容的窗口。通常它應(yīng)該至少能顯示三種普通格式的內(nèi)容:文字CF_TEXT、位圖CF_BITMAP、元文件CF_METAFILEPICT。剪貼板觀察鏈?zhǔn)且幌盗邢嗷オ?dú)立的剪貼板觀察窗口,它們都能夠接受當(dāng)前發(fā)送到剪貼板的內(nèi)容。我們大致按照以下步驟在窗口中處理有關(guān)剪貼板的內(nèi)容。  

首先,使用SetClipboardViewer(HWND)函數(shù)向剪貼板觀察鏈中加入一個(gè)觀察窗口。當(dāng)剪貼板的內(nèi)容發(fā)生變化時(shí),該窗口會(huì)接收到一個(gè)WM_DRAWCLIPBOARD消息。該函數(shù)需要傳遞的參數(shù)是觀察窗口的句柄。返回值也是一個(gè)窗口句柄類型,標(biāo)識(shí)了將要加入的下一個(gè)窗口。  

然后,響應(yīng)WM_DRAWCLIPBOARD消息處理剪貼板內(nèi)容的變化。  

最后,在程序退出或關(guān)閉時(shí)需要調(diào)用ChangeClipboardChain函數(shù)來(lái)將自己從觀察鏈中刪除。然后調(diào)用SendMessage函數(shù)把這些消息傳遞到觀察鏈中的下一個(gè)觀察窗口。函數(shù)ChangeClipboardChain原型如下:  

BOOL   ChangeClipboardChain(
HWND   hWndRemove,   //將要?jiǎng)h除的窗口的句柄
HWND   hWndNewNext   //觀察鏈中下一個(gè)窗口的句柄
);  
Delphi的clipbrd.pas單元中定義了一個(gè)類TClipboard,它封裝了Windows剪貼板,簡(jiǎn)化了大量復(fù)雜的處理過(guò)程。我們?cè)诔绦蛑锌梢灾苯诱{(diào)用全局函數(shù)Clipboard,該函數(shù)用于返回TClipboard對(duì)象實(shí)例,使用這個(gè)實(shí)例對(duì)剪貼板進(jìn)行剪切、復(fù)制和粘貼等操作。下面是TClipboard對(duì)象的幾個(gè)常用的方法和屬性的簡(jiǎn)單介紹。  

方法:  

Assign:將指定的對(duì)象放入剪貼板中。  

Open:打開(kāi)剪貼板,防止其他程序改寫剪貼板。在向剪貼板加入多項(xiàng)數(shù)據(jù)時(shí)尤其有用。  

Close:關(guān)閉剪貼板。應(yīng)該與打開(kāi)剪貼板成對(duì)使用。  

Clear:清空剪貼板。  

GetAsHandle:返回剪貼板中指定格式數(shù)據(jù)的句柄。使用前必須打開(kāi)剪貼板。  

GetComponent:返回剪貼板中的一個(gè)控件。Delphi自己使用得多。  

HasFormat:查詢剪貼板中是否有指定格式的內(nèi)容。  

屬性:  

AsText:用于讀寫剪貼板文字內(nèi)容。  

FormatCount:讀剪貼板中數(shù)據(jù)格式的種數(shù)。  

Formats:返回剪貼板中各種格式的列表。  

此外,Delphi中的許多控件中也封裝了有關(guān)剪貼板處理的操作。下面的一個(gè)處理剪貼板的簡(jiǎn)單例子,只是將剪貼板的文字內(nèi)容顯示為窗口標(biāo)題。  

unit   Unit1;

interface

uses
Windows,   Messages,   SysUtils,   Classes,
Graphics,   Controls,   Forms,   Dialogs,
Clipbrd;//加入clipbrd單元

type
TForm1   =   class(TForm)
procedure   FormCreate(Sender:   TObject);
procedure   FormClose(Sender:   TObject;
var   Action:   TCloseAction);
private
{   Private   declarations   }
public
NextClipHwnd:HWND;//觀察鏈中下一個(gè)窗口句柄
procedure   WMDrawClipBoard
(var   AMessage:TMessage);
message   WM_DRAWCLIPBOARD;
//處理WM_DRAWCLIPBOARD消息過(guò)程
end;

var
Form1:   TForm1;

implementation

{$R   *.DFM}

{   TForm1   }

procedure   TForm1.WMDrawClip
Board(var   AMessage:   TMessage);
begin
//將WM_DRAWCLIPBOARD
消息傳遞到下一個(gè)觀察鏈中的窗口
SendMessage(NextClipHwnd,AMessage.
Msg,AMessage.WParam,AMessage.LParam);
//查詢剪貼板中特定格式的數(shù)據(jù)內(nèi)容
if   (Clipboard.HasFormat(CF_TEXT)   or
Clipboard.HasFormat(CF_OEMTEXT))   then
begin
//處理剪貼板中內(nèi)容
Caption:=Clipboard.asText;
end;
end;

procedure   TForm1.FormCreate(Sender:   TObject);
begin
//獲得觀察鏈中下一個(gè)窗口句柄
NextClipHwnd:=SetClipBoardViewer(Handle);
end;

procedure   TForm1.FormClose
(Sender:   TObject;   var   Action:   TCloseAction);
begin
//從觀察鏈中刪除本觀察窗口
ChangeClipboardChain(Handle,NextClipHwnd);
//將WM_DRAWCLIPBOARD
消息傳遞到下一個(gè)觀察鏈中的窗口
SendMessage(NextClipHwnd,WM_
CHANGECBCHAIN,Handle,NextClipHwnd);
end;

end.
需要注意的是,在處理剪貼板內(nèi)容變化的消息WM_DRAWCLIPBOARD的過(guò)程和關(guān)閉窗口事件中使用函數(shù)sendmessage把WM_DRAWCLIPBOARD或WM_CHANGECBCHAIN消息傳遞到觀察鏈中的下一個(gè)窗口是必要的,否則有可能其他窗口不能獲得類似消息。另外,在使用網(wǎng)絡(luò)螞蟻時(shí)筆者曾經(jīng)碰到不能設(shè)置剪貼板格式的情況,在此提醒讀者注意檢查RegisterClipboardFormat等函數(shù)的返回值。  

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    日本免费一本一二区三区| 五月婷婷六月丁香亚洲| 亚洲伦理中文字幕在线观看 | 国产精品亚洲欧美一区麻豆| 日韩一级一片内射视频4k| 国产91麻豆精品成人区| 日本女人亚洲国产性高潮视频| 精品日韩av一区二区三区| av在线免费观看在线免费观看| 激情综合五月开心久久| 出差被公高潮久久中文字幕| 翘臀少妇成人一区二区| 午夜福利黄片免费观看| 久久热在线视频免费观看| 午夜直播免费福利平台| 国产激情一区二区三区不卡| 国产av熟女一区二区三区蜜桃| 免费一级欧美大片免费看| 欧美精品女同一区二区| 亚洲欧美日韩中文字幕二欧美| 亚洲清纯一区二区三区| 日韩精品小视频在线观看| 男人操女人下面国产剧情| 国内女人精品一区二区三区| 国产不卡免费高清视频| 五月婷婷缴情七月丁香| 亚洲伦片免费偷拍一区| 国产男女激情在线视频| 人妻久久这里只有精品| 九九久久精品久久久精品| 亚洲中文字幕人妻av| 欧美精品激情视频一区| 黄色美女日本的美女日人| 国产日韩久久精品一区| 日韩人妻有码一区二区| 高清在线精品一区二区| 熟妇久久人妻中文字幕| 少妇一区二区三区精品| 大屁股肥臀熟女一区二区视频 | 黄色日韩欧美在线观看| 中文字幕一二区在线观看|