【急】怎样根据iframe的name获取内嵌的iframe的ihtmldocument2?
马上春节了,还有点任务没有完成,各个大大帮忙啊
[解决办法]
http://topic.csdn.net/t/20030826/12/2188599.html
[解决办法]
蒋大侠的正解~
如果你急的话这里有封装好的函数:
getFrameDocumentById
http://www.codeguru.com/cpp/i-n/internet/browsercontrol/article.php/c13065
HRESULT getFrameDocumentById(IHTMLDocument2* topLevelDocument, LPOLESTR frameId, IHTMLDocument2** frameDocument){ HRESULT hresult = E_FAIL; CComPtr<IOleContainer> container; HRESULT hr = topLevelDocument->QueryInterface(IID_IOleContainer, (void**)&container); if (hr == S_OK) { CComPtr<IEnumUnknown> enumerator; // Get an enumerator for the frames hr = container->EnumObjects(OLECONTF_EMBEDDINGS, &enumerator); if (hr == S_OK) { CComPtr<IUnknown> unk; ULONG uFetched; // Enumerate and refresh all the frames for (UINT i = 0; S_OK == enumerator->Next(1, &unk, &uFetched); i++) { CComPtr<IWebBrowser2> browser; // QI for IWebBrowser here to see if we have an embedded // browser hr = unk->QueryInterface(IID_IWebBrowser2, (void**)&browser); if (hr == S_OK) { CComPtr<IHTMLElement> htmlElement; unk->QueryInterface(IID_IHTMLElement, (void**)&htmlElement); CComBSTR id; if (SUCCEEDED(htmlElement->get_id(&id)) && id) { CComPtr<IDispatch> disp; browser->get_Document(&disp); if (disp != NULL ) { CComPtr<IHTMLDocument2> frameDoc; hr = disp->QueryInterface( IID_IHTMLDocument2, (void**)&frameDoc); if (hr == S_OK) { if (!wcscmp(id, frameId)) { *frameDocument = frameDoc; (*frameDocument)->AddRef(); hresult = S_OK; break; } } } } } } } } return hresult;}