800分求TWebBrowser问题(300分)

  • 主题发起人 主题发起人 yellowyellow
  • 开始时间 开始时间
Y

yellowyellow

Unregistered / Unconfirmed
GUEST, unregistred user!
分值可另外给。。。

如和获得网页中各Frame的源代码或innerHTML

例子网站 http://aro999.com

我只能获得主页面的innerHTML,急求各Frame获得方法。

=========================

ht:=IHTMLDocument2(wb.Document);
memo1.Lines.Add(
ht.body.innerHTML);
edit1.Text:= inttostr(ht.frames.length);
for j:=0 to ht.frames.length-1 do
begin
vj:=j;
Dispatch:=ht.frames.item(vj);

FrameWindow:=IHTMLWindow2(dispatch);
 
不知道,帮你顶 下吧
 
你能不能获得网页源代码,完成后重新,看下载FRAME的源重新下载就完了,应该没有问题。
 
你上面的代码是对的,其实就是再加上循环遍历就行了,就如同...找一个目录下所有子目录以及文件,每个Frame里面是一个完整的HTMLWindow,所以只要你去做了,是不必花800分的,呵呵,
 
做个记号,回家再弄,800分,要了
你是要获取主页面的frames的链接,还是要获取主页面frames链接的页面源码?
是不是一定要用WebBrowser获取源码
可以用几种方法
1.用webbrowser获取
2.用IDHTTP类似的网络控件获取
3.用MSHTML获取

你想要第几种方法?
 
800分?现在都是得到答案就忘了给分这回事了!渐渐的心意疏懒了!
 
ht:=IHTMLDocument2(wb.Document);
memo1.Lines.Add( ht.body.innerHTML);
edit1.Text:= inttostr(ht.frames.length);
for j:=0 to ht.frames.length-1 do
begin
vj:=j;
ht1:=ht.frames.item(vj).document;
memo1.Lines.Add( ht1.body.innerHTML)
(没有运行验证,应该没问题!)
 
应该是outterHTML
 
to:大哥真有分呀!
 
找出其内嵌的网页,然后循环取吧
 
yeskert1 方法不用看~绝对不行。很早试过

、、、、、
要Frame代码和Frame内容。。也就是要HTML拉。。
包括能提取其中的FORM 按钮 输入框。。。。
 
TEmbeddedWB

for I := 0 to EmbeddeWb.FrameCount -1 do
EmbeddeWb.SaveFrameToFile(I, '文件名');

http://www.2ccc.com/article.asp?articleid=3339
 
你总共才多少分啊?????????
 
思路,获取当前网页的源代码
然后再去分析网页源代码就OK了
代码可以自己写,不会很难,有问题可以留言
 
也在找这方面的东东,谢谢`
 
使用DHTML。
frames:=wb.OleObject.document.frames;
for i:=0 to frames.length do
memo1.lines.Add(frames.document.body.innerHTML);
因为是Ole的关系,大小写最好不要写错。
 
做个记号.慢慢看.
 
winxp sp2 系统中父窗口没有权限控制iframe
 
使用DHTML。
frames:=wb.OleObject.document.frames;
for i:=0 to frames.length do
memo1.lines.Add(frames.document.body.innerHTML);
因为是Ole的关系,大小写最好不要写错。

takashiki 这个方法是对的。
 
BCB方法, 供参考:

ExecWBEx(IDM_VIEWSOURCE);

//---------------------------------------------------------------------------
// 功能描述: 通过IID_IOleCommandTarget接口执行命令
//---------------------------------------------------------------------------
void TFrmWeb::ExecWBEx(int cmdID,TVariant *pvaIn,TVariant *pvaOut,int nCmdExecOpt)
{
IDispatch * WebDocument = static_cast<IDispatch *>(CppWebBrowser->Document);
IHTMLDocument2 *HTMLDocument = static_cast<IHTMLDocument2 *>(WebDocument);
if(HTMLDocument)
{
IOleCommandTarget *pCmd;
HRESULT hr=HTMLDocument->QueryInterface(IID_IOleCommandTarget,(void **)(&pCmd));
if(SUCCEEDED(hr))
{
pCmd->Exec(&CGID_MSHTML,cmdID,nCmdExecOpt,pvaIn,pvaOut);
}
}

}
 
后退
顶部