2024年6月11日发(作者:)

delphi读写剪贴板

字体大小: 小 中 大

作者: admin | 分类: 剪贴板 | 浏览: 177 | 评论: 暂时没有评论

设置剪贴板数据:

先用GlobalAlloc在堆中分配空间,返回的Hmem句柄将作为SetClipboardData

的第二个参数。

然后用GlobalLock把Hmem转为指针,再用delphi的strCopy把字符串写入。

取剪贴板数据:

获取剪贴板里的数据时,是不知道当前剪贴板里是否有数据的,也不知道剪贴板

里的数据格式是什么。那么下面就来解决这两个问题,先使用函数

IsClipboardFormatAvailable来获取剪贴板里的格式是否可以处理,接着使用

函数OpenClipboard打开剪贴板,然后使用函数GetClipboardData来获取剪贴

板数据

源代码如下:

-----------------------------------------------------------

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,

Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Memo1: TMemo;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

*******

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure 1Click(Sender: TObject);

var

s1:string;

hmem:HGLOBAL;

pstr:PChar;

begin

s1:='猪悟能在test剪贴板';

hmem:=GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE,Length(s1)+4);

pstr:=GlobalLock(hmem);

StrCopy(pstr,PChar(s1));

if OpenClipboard(0)then

begin

SetClipboardData(CF_TEXT,hmem);

CloseClipboard;

GlobalUnlock(hmem);

GlobalFree(hmem);

ShowMessage('字符串已经复制到剪贴板');

end;

end;

procedure 2Click(Sender: TObject);

var

hmem:THandle;

pstr:PChar;

begin

//检查剪贴板类容类型

if IsClipboardFormatAvailable(CF_TEXT) then