Posted on 2006-09-05 21:07
鳳之焚 閱讀(2028)
評論(3) 編輯 收藏 引用 所屬分類:
IE相關
IHTMLDocument2* GetDocFromFrame(IHTMLDocument2* pDoc2)
{
? CComPtr<IHTMLDocument3> pDoc3;
? CComPtr<IHTMLDocument2> pDoc2Frame;
? hr = pDoc2->QueryInterface(IID_IHTMLDocument3,(void**)&pDoc3) ;
? if(hr==S_OK)
? {
??? CComBSTR bstrName("FRAME");//CComBSTR bstrName("IFRAME");
??? CComPtr<IHTMLElementCollection> pElemCollFrame;
??? hr=pDoc3->getElementsByTagName(bstrName,&pElemCollFrame);
??? if (hr!=S_OK) return NULL;
??? long pLength;
??? hr=pElemCollFrame->get_length(&pLength);
??? if(hr!=S_OK) return NULL;
???
??? for(int i=0;i<pLength;i++)
??? {
????? IDispatch *pDispFrame=NULL;
????? CComVariant vIndex=i;
????? hr=pElemCollFrame->item(vIndex,vIndex,&pDispFrame);
????? if(hr!=S_OK) continue;
?????
????? CComPtr<IHTMLElement> pElemFrame;
????? hr=pDispFrame->QueryInterface(IID_IHTMLElement,(void**)&pElemFrame);
????? if(hr!=S_OK) continue;
????? CComPtr<IHTMLFrameBase2> pFrameBase2;
????? hr=pElemFrame->QueryInterface(IID_IHTMLFrameBase2,(void**)&pFrameBase2);
????? if(hr!=S_OK) continue;
?????
????? CComPtr<IHTMLWindow2> pWindow2;
????? hr=pFrameBase2->get_contentWindow(&pWindow2);
????? if(hr==S_OK)
????? {
??????? hr=pWindow2->get_document(&pDoc2Frame);
??????? if (hr==S_OK)
??????? {
????????? return pDoc2Frame;
??????? }
????? }
??? }
??? pDispFrame->Release();
? }
? return NULL;
}