当我使用以下命令打开Google网页时:
WebBrowser1.Navigate('http://www.google.com.au/advanced_search?hl=en');它将打开,并将光标放在编辑框中。
所以当我使用的时候:
WebBrowser1.ExecWB(OLECMDID_SELECTALL,OLECMDEXECOPT_PROMPTUSER,vaIn, vaOut);它只复制光标所在的位置。不是整个网页,这是我想要复制的。我的代码是:
procedure Pause()
begin
//code to pause until page loads.
end;
procedure TForm2.Button22Click(Sender: TObject);
var s:String;
vaIn, vaOut: OleVariant;
begin
s:='http://www.google.com.au/advanced_search?hl=en';
WebBrowser1.Navigate(s);
while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
begin
Pause(1000);
end;
//------->I need to put code here so the SELECTALL line of code works.<----------
//------->So the cursor isn't in to editbox but as if it has clicked <----------
//------->the webpage <----------
WebBrowser1.ExecWB(OLECMDID_SELECTALL,OLECMDEXECOPT_PROMPTUSER,vaIn, vaOut);
end;如何选择整个网页?
发布于 2012-09-20 20:44:08
在选择all之前,尝试聚焦body:
((WebBrowser1.Document as IHTMLDocument2).body as IHTMLElement2).focus();
WebBrowser1.ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_PROMPTUSER, vaIn, vaOut);这样说来,更好的方法是使用document.body.innerText来抓取文本,而不是像您那样模拟选择/复制。
发布于 2012-09-20 20:10:46
http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvc/thread/eef2f809-cadf-44a3-956e-e75925a4b85e建议在复制前显式选择全部。这种方式只有在页面没有框架时才能直接工作(Google Advanced有IFRAMEs,IHTMLBodyElement.CreateTextRange失败)
但是像这样的后期绑定代码可以在XE2/Win7x64/IE9中工作:
procedure TForm2.btn2Click(Sender: TObject);
var HTML_Doc, oRange: OleVariant;
begin
HTML_Doc := WebBrowser1.Document;
oRange := HTML_Doc.body.createTextRange;
oRange.select();
WB_Copy(webbrowser1);
end;WBCopy取自WBFunks单元http://codingrus.ru/readarticle.php?article_id=721,并归结为带有OLECMDID_COPY、OLECMDEXECOPT_DODEFAULT参数的ExecWB调用。
https://stackoverflow.com/questions/12512088
复制相似问题