delphi 读取剪粘板内的html格式数据

根据剪贴板的原理,在获取剪贴板内容之前,必须指定要获取内容的格式。由于剪贴板中的数据可能存在多种格式,所以有必要对剪贴板的格式类型先做一些了解。W写下了以下的测试代码:
procedure TForm1.Button3Click(Sender: TObject);
var
  i: integer;
  Buffer: PChar;
  s: string;
begin
  Memo1.Lines.Clear;  //增加了一个Memo控件来跟踪数据
  with TClipboard.Create do  //利用TClipboard追踪剪贴板
  begin
    GetMem(Buffer, 20);
    for i:=0 to FormatCount - 1 do
    begin
      GetClipboardFormatName(Formats[i], Buffer, 20);
      s := StrPas(Buffer);
      Memo1.Lines.Add(Format('%s:%d', [s, Formats[i]]));
    end;
    FreeMem(Buffer);
    Free;
  end;
end;

 

点击Button3,在Memo1文本框中显示出以下的内容:
DataObject:49161
Object Descriptor:49166
Rich Text Format:49312
HTML Format:49394
HTML Format:14
HTML Format:3
PNG:49672
GIF:49536
JFIF:49538
……
很明显,第4行的“HTML Format:49394”应该就是HTML编辑器真正需要的格式。由于“HTML Format”并不是剪贴板默认支持的格式,所以W需要使用API函数RegisterClipboardFormat先进行注册。
procedure TForm1.Button4Click(Sender: TObject);
var
  s: string;
  hMem: DWORD;
  CF_HTML: DWORD; // 声明一个CF_HTML剪贴板格式
  txtPtr: PChar;
begin
  CF_HTML := RegisterClipboardFormat('HTML Format');  //注册HTML Format格式
  with TClipboard.Create do
  begin
    hMem := GetAsHandle(CF_HTML);
    txtPtr := GlobalLock(hMem);
    s := StrPas(txtPtr);
    GlobalUnlock(hMem);
    Memo1.Lines.Add(UF8Decode(s));
    Free;
  end;
end;

单击Button4就可以在memo1中看到真定html格式文本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值