如何获取子框架IHTMLWindow2的指针

ratooner 2007-01-17 12:47:03
IHTMLDocument2 *pHTMLDoc=NULL;
IHTMLFramesCollection2 *pFrames;
LPDISPATCH pDisp;
VARIANT id,index;
pDisp=mycwb->Document;
if(pDisp)
{
}
else
{
ShowMessage("Document read error.");
return;

}
if(SUCCEEDED(pDisp->QueryInterface(IID_IHTMLDocument2,(void **)&pHTMLDoc)))
{
}
else
{return;}
if(pHTMLDoc->get_forms(&pelement)!=S_OK) //得到form指针
{
pHTMLDoc->Release();
pDisp->Release();
pelement->Release();
ShowMessage("read form failed!");
return;
}
long p;
pelement->get_length(&p); //form的个数
ShowMessage(" Forms: "+IntToStr(p));
if(p>0)
{
for (long i=0;i<p;i++)
{
V_VT(&id)=VT_I4;
V_I4(&id)=i;
V_VT(&index)=VT_I4;
V_I4(&index)=0;
}
}
//如果forms是0,那么取Window2数
IHTMLWindow2 *pHTMLhwd;
long phwd;
if(pHTMLDoc->get_parentWindow(&pHTMLhwd)==S_OK)
ShowMessage("Get IHTMLWindow2 OK");
pHTMLhwd->get_length(&phwd);
ShowMessage("Total IHTMLWindow2 number:"+IntToStr(phwd));

//获取frames数成功
IHTMLFramesCollection2 *pFrames3;
if(pHTMLhwd->get_frames(&pFrames3)==S_OK)
{
pFrames3->get_length(&phwd);
ShowMessage("子框架:"+IntToStr(phwd));
}
//如果子框架数大于0,
//则一个一个地取得子框架的IHTMLWindow2指针
IHTMLWindow2 *pHTMLhwd1;
tagVARIANT id1;
if(phwd>0)
{
for(int a=0;a<phwd;a++)
{
。。。。。。
}
}
请那位大虾帮忙告诉我如何写。。。。。中的内容,就是取得子框架的指针
...全文
439 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pp616 2007-01-18
  • 打赏
  • 举报
回复
是pHTMLhwd1 复制的时候忘改了。
pp616 2007-01-17
  • 打赏
  • 举报
回复
VARIANT tmp,fout;
tmp.vt=VT_I4;

for(int a=0;a<phwd;a++)
{
tmp.iVal=a;
pFrames3->item(&tmp, &fout);
{
if(fout.pdispVal!=NULL)
{
fout.pdispVal->QueryInterface(IID_IHTMLWindow2,(void**)&pHTMLhwd1);
if(CpFrameWindow!=NULL)
{//你已经得到了子框架的IHTMLWindow2指针
pHTMLhwd1->Release();
}
fout.pdispVal->Release();
}
}
}
ratooner 2007-01-17
  • 打赏
  • 举报
回复
CpFrameWindow是什么变量??

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧