六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

監視剪貼板內容

[摘要]---- 沖浪的年代,用過網絡螞蟻的人肯定不少,其中一項監視剪貼板變化的功能讓人感覺到不少體貼。本文將介紹在Delphi中如何使用“體貼板”,來豐富自己的軟件功能。 ---- Windows使用剪貼板觀察器和觀察鏈。剪貼板觀察器是一個顯示剪貼板當前內容的窗口。通常它應該至少能顯示三種普通格式的內...
---- 沖浪的年代,用過網絡螞蟻的人肯定不少,其中一項監視剪貼板變化的功能讓人感覺到不少體貼。本文將介紹在Delphi中如何使用“體貼板”,來豐富自己的軟件功能。  

---- Windows使用剪貼板觀察器和觀察鏈。剪貼板觀察器是一個顯示剪貼板當前內容的窗口。通常它應該至少能顯示三種普通格式的內容:文字CF_TEXT、位圖CF_BITMAP、元文件CF_METAFILEPICT。剪貼板觀察鏈是一系列相互獨立的剪貼板觀察窗口,它們都能夠接受當前發送到剪貼板的內容。我們大致按照以下步驟在窗口中處理有關剪貼板的內容。  

---- 首先,使用SetClipboardViewer(HWND)函數向剪貼板觀察鏈中加入一個觀察窗口。當剪貼板的內容發生變化時,該窗口會接收到一個WM_DRAWCLIPBOARD消息。該函數需要傳遞的參數是觀察窗口的句柄。返回值也是一個窗口句柄類型,標識了將要加入的下一個窗口。  

---- 然后,響應WM_DRAWCLIPBOARD消息處理剪貼板內容的變化。  

---- 最后,在程序退出或關閉時需要調用ChangeClipboardChain函數來將自己從觀察鏈中刪除。然后調用SendMessage函數把這些消息傳遞到觀察鏈中的下一個觀察窗口。函數ChangeClipboardChain原型如下:  

BOOL ChangeClipboardChain(
HWND hWndRemove, //將要刪除的窗口的句柄
HWND hWndNewNext  //觀察鏈中下一個窗口的句柄
   );
---- Delphi的clipbrd.pas單元中定義了一個類TClipboard,它封裝了Windows剪貼板,簡化了大量復雜的處理過程。我們在程序中可以直接調用全局函數Clipboard,該函數用于返回TClipboard對象實例,使用這個實例對剪貼板進行剪切、復制和粘貼等操作。下面是TClipboard對象的幾個常用的方法和屬性的簡單介紹。  

---- 方法:  

---- Assign:將指定的對象放入剪貼板中。  

---- Open:打開剪貼板,防止其他程序改寫剪貼板。在向剪貼板加入多項數據時尤其有用。  

---- Close:關閉剪貼板。應該與打開剪貼板成對使用。  

---- Clear:清空剪貼板。  

---- GetAsHandle:返回剪貼板中指定格式數據的句柄。使用前必須打開剪貼板。  

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

---- HasFormat:查詢剪貼板中是否有指定格式的內容。  

---- 屬性:  

---- AsText:用于讀寫剪貼板文字內容。  

---- FormatCount:讀剪貼板中數據格式的種數。  

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

---- 此外,Delphi中的許多控件中也封裝了有關剪貼板處理的操作。下面的一個處理剪貼板的簡單例子,只是將剪貼板的文字內容顯示為窗口標題。  

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;//觀察鏈中下一個窗口句柄
procedure WMDrawClipBoard
(var AMessage:TMessage);
message WM_DRAWCLIPBOARD;
//處理WM_DRAWCLIPBOARD消息過程
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

{ TForm1 }

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

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

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

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


主站蜘蛛池模板: 亚洲六月丁香色婷婷综合久久 | 特级片在线观看 | 亚洲 欧美精品 | 呦呦国产 | 中文精品视频一区二区在线观看 | 日韩在线观看视频免费 | 天天操天天摸天天曰天天干天天弄天天干 | 青青成人福利国产在线视频 | 在线视频国产一区 | 日韩最新中文字幕 | 色老久久精品偷偷鲁一区 | 亚洲第一免费网站 | 手机亚洲第1页 | 一二三四免费观看高清观看在线 | 亚洲欧美日韩国产综合久 | 天天综合天天操 | 亚洲福利一区二区 | 日本护士后进式猛烈动态图片 | 天天色天天摸 | 香蕉网站在线 | 青草青视频在线观看 | 伊人网在线播放 | 日韩精品欧美一区二区三区 | 色偷偷亚洲男人天堂 | 青草草在线 | 亚洲一欧洲中文字幕在线 | 日本高清视频色wwwwww色 | 亚洲福利一区二区三区 | 亚洲成a人片在线播放 | 伊人色综合久久天天人手人停 | 四虎在线视频免费观看 | 亚洲影视在线观看 | 色噜噜色偷偷 | 日韩欧 | 欧美亚洲日本视频 | 日韩亚洲欧美综合 | 日本亚欧乱色视频在线网站 | 日韩中出在线 | 青青草一区国产97 | 色视频网站色视频播放 | 亚洲国产观看 |