Простенький код для получения HTML кодов:
IWebBrowser2* pWebBrowser = NULL;
LPDISPATCH lpDispatch;
IHTMLDocument2 *lpHtmlDocument = NULL;
HRESULT hr = GetDlgControl(IDC_EXPLORER1, __uuidof(IWebBrowser2*), (void**)&pWebBrowser);
if(pWebBrowser)
{
pWebBrowser->get_Document(&lpDispatch);
pWebBrowser->Release();
}
else return -2;
if(lpDispatch)
{
lpDispatch->QueryInterface(IID_IHTMLDocument2, (void**)&lpHtmlDocument);
lpDispatch->Release();
}
else return -3;
IHTMLElement *pb=0;
BSTR p=0;
if(lpHtmlDocument)
{
IHTMLFramesCollection2* pIFrameCol;
IHTMLDocument2 * pIFrameDoc;
long pp=0;
if (SUCCEEDED(lpHtmlDocument->get_frames(&pIFrameCol)))
{
pIFrameCol->get_length(&pp);
if(pp!=0)
{
//Есть фреймы
for(long i=0;i<pp;i++)
{
VARIANT frameRequested;
VARIANT frameOut;
frameRequested.vt = VT_UINT;//VT_I4 ;
frameRequested.bstrVal = (BSTR)i;
pIFrameCol->item(&frameRequested, &frameOut);
pIFrameCol->QueryInterface(IID_IHTMLDocument2,(void**)&pIFrameDoc);
IHTMLWindow2* pIFrameWindow;
frameOut.pdispVal->QueryInterface(IID_IHTMLWindow2,
(void**)&pIFrameWindow);
pIFrameWindow->get_document(&pIFrameDoc);
if(pIFrameDoc)
{
// всё беру............ get_innerHTML()........
}
else
{
// не могу взять и как взять по другому не придумывается
}
}
}
}
}
else return -4;
//////////////// Конец КОДА /////////////////////////
Так вот! С этого сайта и большинства других все фреймы забираю без проблем
(например:
http://www.rsdn.ru/?Info/Howtoask.xml)
А с другого (например:
http://www.realtor.org/rodesign.nsf/pages/FS_FREALTOR?OpenDocument)
третий (последний pp==2) фрейм возвращает pIFrameDoc=0, хотя на экране всё вижу и забрать
код мышкой (по-детски) могу спокойно.
Как можно это сделать "по-взрослому"?
Подскажите другой путь, истинный путь.