delphi 剪貼簿操作,讀取剪貼簿內容
阿新 • • 發佈:2019-01-02
//全域性變數
NextClipHwnd:HWND;//剪貼簿觀察鏈中下一個視窗控制代碼
procedure TForm1.FormShow(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;
procedure WMDrawClipBoard (var AMessage:TMessage); message WM_DRAWCLIPBOARD; //處理WM_DRAWCLIPBOARD剪貼簿訊息過程
procedure TCardForm.WMDrawClipBoard(var AMessage: TMessage);
var emailstr : string;
begin
//將WM_DRAWCLIPBOARD訊息傳遞到下一個觀察鏈中的視窗
SendMessage(NextClipHwnd,AMessage.Msg,AMessage.WParam,AMessage.LParam);
//查詢剪貼簿中特定格式的資料內容
if (PageControl.ActivePageIndex = 1) and
chkClipboard.Checked and
((Clipboard.HasFormat(CF_TEXT) or Clipboard.HasFormat(CF_OEMTEXT))) then
begin
//處理剪貼簿中內容
emailstr := Clipboard.AsText;
if pos('@', emailstr) > 0 then //必須有@
begin
if pos(cmbSeparator.Text, emailStr) > 0 then //如果有分隔符
emailstr := copy(emailstr, 1, pos(cmbSeparator.Text, emailStr) - 1); //取得email地址
if not MailURLMayBeInvalid(emailStr) then
begin
//增加到列表中
memEmailList.Lines.Add(Clipboard.AsText);
beep;
memEmailList.SelStart := 65535;
end;
end; //if pos(emailstr, '@') > 0 then
//Clipboard.Clear;
end;
end;
NextClipHwnd:HWND;//剪貼簿觀察鏈中下一個視窗控制代碼
procedure TForm1.FormShow(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;
procedure WMDrawClipBoard (var AMessage:TMessage); message WM_DRAWCLIPBOARD; //處理WM_DRAWCLIPBOARD剪貼簿訊息過程
procedure TCardForm.WMDrawClipBoard(var AMessage: TMessage);
var emailstr : string;
begin
//將WM_DRAWCLIPBOARD訊息傳遞到下一個觀察鏈中的視窗
SendMessage(NextClipHwnd,AMessage.Msg,AMessage.WParam,AMessage.LParam);
//查詢剪貼簿中特定格式的資料內容
if (PageControl.ActivePageIndex = 1) and
chkClipboard.Checked and
((Clipboard.HasFormat(CF_TEXT) or Clipboard.HasFormat(CF_OEMTEXT))) then
begin
//處理剪貼簿中內容
emailstr := Clipboard.AsText;
if pos('@', emailstr) > 0 then //必須有@
begin
if pos(cmbSeparator.Text, emailStr) > 0 then //如果有分隔符
emailstr := copy(emailstr, 1, pos(cmbSeparator.Text, emailStr) - 1); //取得email地址
if not MailURLMayBeInvalid(emailStr) then
begin
//增加到列表中
memEmailList.Lines.Add(Clipboard.AsText);
beep;
memEmailList.SelStart := 65535;
end;
end; //if pos(emailstr, '@') > 0 then
//Clipboard.Clear;
end;
end;