设置剪贴板数据:
先用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)
|
请发表评论