WebBrowser问题 我现在要实现的是:怎么样才能够通过程序把WebBrowser中所显示的页面完整的复制到word文档中的指定位置,包括所有的文字和图片. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 转贴剪贴板中可以同时存放多种数据,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; to:darkliu(钢铁工人甲)谢谢你提供的答案,不过你给的并不是我想要得,我现在已经搞定了,不过方法比较笨,但挺简单,现在帖出来大家共享,如果谁有更好的方法可以告诉我一声,不胜感谢.var ItemIndex : OleVariant;begin FLoadWordData(ExtractFilePath(ParamStr(0)) + TemplateFile); //通过模板建立word, try WordDocu.ConnectTo(FDoc); //FDoc:为建立的word文档的句柄 except //showmessage('文档连接失败!'); Exit; end; WebBrowser1.ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT); //全选网页 WebBrowser1.ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT); //复制网页 WordDocu.Range.Paste; //word文档粘贴 WebBrowser1.ExecWB(OLECMDID_UNDO, OLECMDEXECOPT_DODEFAULT); //取消全选end; ===代码和界面分离=== 关于Sqlserver2000数据库的text类型数据delphi应用 Filtered的用法 关于的delphi中的指针问题(感兴趣者进,为了分数者免) 在Delphi中如何将XML中提供的文件进行下载 问MIDAS的两个小问题 如何动态创建按钮?以及如何让其响应click事件! 程序员没有学历能在北京、上海、深圳找到好的工作吗! 一些小问题,请各位大虾来看看,很好回答 为什么程序运行一段时间后,POST数据会停止响应 ? spcomm串口操作的问题,再解决不了,偶要失业了... 帮我转换一下公式
在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;
谢谢你提供的答案,不过你给的并不是我想要得,我现在已经搞定了,不过方法比较笨,但挺简单,现在帖出来大家共享,如果谁有更好的方法可以告诉我一声,不胜感谢.
var
ItemIndex : OleVariant;
begin
FLoadWordData(ExtractFilePath(ParamStr(0)) + TemplateFile); //通过模板建立word,
try
WordDocu.ConnectTo(FDoc); //FDoc:为建立的word文档的句柄
except
//showmessage('文档连接失败!');
Exit;
end;
WebBrowser1.ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT); //全选网页
WebBrowser1.ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT); //复制网页
WordDocu.Range.Paste; //word文档粘贴
WebBrowser1.ExecWB(OLECMDID_UNDO, OLECMDEXECOPT_DODEFAULT); //取消全选
end;