delphi 剪贴板操作,读取剪贴板内容

//全局变量
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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值