回复人: disney(编程乐园) ( ) 信誉:100 2002-12-05 23:12:00 得分:0
我发现大家都不看帮助文档,不分析代码,其实很简单的。
主要内容是这样的:剪贴板中可以同时存放多种数据,TClipboard类型
在FormatCount记录有数据的项数,Formats[]则是这些数据的类型,
WINAPI的GetClipboardFormatName函数可以得到数据类型的名字,IE
复制下来的数据一般有HTML format的数据,把它复制下来就是网页。
ASTEXT只是获得调用GetClipboardData(CF_TEXT),得到的一定是文本
数据。下面程序可得到贴板中的网页源码,前面还有加有源URL地址及
其它内容,一看就明白。
procedure TForm1.Button1Click(Sender: TObject);
var fn,html:string;
i,fl,size:integer;
data:thandle;
p:pointer; //数据指针
begin
clipboard.Open;
memo1.text:='';
for i:=0 to Clipboard.FormatCount-1 do begin
setlength(fn,100);
fl:=GetClipboardFormatName(clipboard.Formats[i],@fn[1],200);
setlength(fn,fl);
if pos('HTML',fn)>0 then begin //是HTML数据
Data := GetClipboardData(clipboard.formats[i]); //得到数据内存句柄
try
p:=GlobalLock(Data);
size:=globalsize(data); //得到数据大小
setlength(html,size); //设置保存区域
move(p^,html[1],size); //复制数据
finally
GlobalUnlock(Data);
end;
break;
end;
end;
memo2.text:=html;
clipboard.close;
end;
把网页保存到数据库中,使用类似MEMO、TEXT或映像字段即可。