delphi读写剪贴板的一些参考
设置剪贴板数据:
先用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 TForm1.Button1Click(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 TForm1.Button2Click(Sender: TObject);
var
hmem:THandle;
pstr:PChar;
begin
//检查剪贴板类容类型
if IsClipboardFormatAvailable(CF_TEXT) then
begin
OpenClipboard(0);
hmem:=GetClipboardData(CF_TEXT);
pstr:=GlobalLock(hmem);
Memo1.Text:=pstr;
GlobalUnlock(hmem);
CloseClipboard;
end;
end;
end.
用#9查找tab符号:
ipos := pos(#9,sTmp)