比如将以下html源码保存为一个htm文件,然后用WebBrowser打开,我想得到他的源码,得到的源码要求和使用鼠标右键点击“查看源文件”菜单的一样<html>
<frameset border=0 frameborder=0 frameSpacing=0 rows=100%>
<frame marginHeight=5 marginWidth=10 name=mainsoft src="http://www.sunroom.com.cn/index.asp?rec=700_32">
</frameset>
</html>
<frameset border=0 frameborder=0 frameSpacing=0 rows=100%>
<frame marginHeight=5 marginWidth=10 name=mainsoft src="http://www.sunroom.com.cn/index.asp?rec=700_32">
</frameset>
</html>
.....
memo1.Lines.Text:=IHtmlDocument2(web.document).body.outerHTML;
....
ActiveX;function WB_SaveHTMLCode(WebBrowser: TWebBrowser; const FileName: TFileName): Boolean;
var
ps: IPersistStreamInit;
fs: TFileStream;
sa: IStream;
begin
ps := WebBrowser.Document as IPersistStreamInit;
fs := TFileStream.Create(FileName, fmCreate);
try
sa := TStreamAdapter.Create(fs, soReference) as IStream;
Result := Succeeded(ps.Save(sa, True));
finally
fs.Free;
end;
end;function WB_GetHTMLCode(WebBrowser: TWebBrowser; ACode: TStrings): Boolean;
var
ps: IPersistStreamInit;
ss: TStringStream;
sa: IStream;
s: string;
begin
ps := WebBrowser.Document as IPersistStreamInit;
s := '';
ss := TStringStream.Create(s);
try
sa := TStreamAdapter.Create(ss, soReference) as IStream;
Result := Succeeded(ps.Save(sa, True));
if Result then ACode.Add(ss.Datastring);
finally
ss.Free;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
WB_SaveHTMLCode(Webbrowser1, 'c:\test.txt');
end;procedure TForm1.Button2Click(Sender: TObject);
begin
WB_GetHTMLCode(Webbrowser1, Memo1.Lines);
end;
经测试,这两个方法得到的源码还是和原来一样,
<html>
<frameset border=0 frameborder=0 frameSpacing=0 rows=100%>
<frame marginHeight=5 marginWidth=10 name=mainsoft src="http://www.sunroom.com.cn/index.asp?rec=700_32">
</frameset>
</html>
和“查看源文件”菜单得到的不一样
上面提到可以用
SendMessage(vHandle, WM_COMMAND, IDM_VIEWSOURCE, 0);
得到源文件,不知具体如何实现呢?
参考http://www.euromind.com/iedelphi/embeddedwb/framefunctions.htm