switch (dispIdMember)
{
//
// The parameters for this DISPID are as follows:
// [0]: Cancel flag - VT_BYREF|VT_BOOL
// [1]: HTTP headers - VT_BYREF|VT_VARIANT
// [2]: Address of HTTP POST data - VT_BYREF|VT_VARIANT
// [3]: Target frame name - VT_BYREF|VT_VARIANT
// [4]: Option flags - VT_BYREF|VT_VARIANT
// [5]: URL to navigate to - VT_BYREF|VT_VARIANT
// [6]: An object that evaluates to the top-level or frame
// WebBrowser object corresponding to the event.
//
case DISPID_BEFORENAVIGATE2: //在打开浏览页面之前的事件处理
break;
case DISPID_NAVIGATECOMPLETE2: //网页打开完毕
break;
case DISPID_DOCUMENTCOMPLETE: //文档打开完毕
{
CComQIPtr<IWebBrowser2> spTempWebBrowser = pDispParams->rgvarg[1].pdispVal;
if ( spTempWebBrowser && m_spWebBrowser2 &&
m_spWebBrowser2.IsEqualObject(spTempWebBrowser))
{
// Get the current document object from browser...
CComPtr<IDispatch> spDispDoc;
if ( SUCCEEDED(m_spWebBrowser2->get_Document(&spDispDoc)) )
{
// ...and query for an HTML document.
CComQIPtr<IHTMLDocument2> spHTMLDoc = spDispDoc;
if (spHTMLDoc != NULL)
{
// Finally, get the images.
GetPicture(spHTMLDoc);
}
}
}
break;
}
case DISPID_DOWNLOADBEGIN: //下载开始
break;
case DISPID_DOWNLOADCOMPLETE: //下载完毕
break;
case DISPID_NEWWINDOW2: //打开新窗口
break;
case DISPID_PROGRESSCHANGE: // 进度条改变
break;
case DISPID_STATUSTEXTCHANGE: // 状态天文字改变
break;
case DISPID_TITLECHANGE: // 标题改变
break;
case DISPID_QUIT: //退出当前浏览页面
RegisterEventHandler(FALSE);
break;
default:
break;
}
// Get the collection of elements from the DOM.
HRESULT hr = spDocument->get_all(&spElements);
if (hr == S_OK && spElements != NULL)
{
// Get the number of elements in the collection.
long cElements = 0;
hr = spElements->get_length(&cElements);
if (hr == S_OK && cElements > 0)
{
for (int i = 0; i < cElements; i++)
{
CComVariant svarItemIndex(i);
CComVariant svarEmpty;
CComPtr<IDispatch> spdispElement;
// Get the element out of the collection by index.
hr = spElements->item(svarItemIndex, svarEmpty, &spdispElement);
if (hr == S_OK && spdispElement != NULL)
{
CComQIPtr<IHTMLElement> spElement = spdispElement;
if (spElement)
{
BSTR strTagName;
spElement->get_tagName(&strTagName);
CString strTemp = strTagName;
if( strTemp=="img" || strTemp=="IMG" )
{
VARIANT strImgURL;
spElement->getAttribute(L"src",0,&strImgURL);
strTemp = strImgURL;
CString strImgPath = GetImagePath(strTemp);
if (0==count)
{
strTemp2 = strImgPath;
count++;
}
if (!strImgPath.IsEmpty())
GreyPicture(strImgPath);
}
}
}
}
if (!GetUrlCacheEntryInfo(lpszImgUrl,NULL,&dwEntrySize))
{
if (GetLastError()!=ERROR_INSUFFICIENT_BUFFER)
{
TRACE("GetUrlCacheEntryInfo Error:%d\n",GetLastError());
return _T("");
}
else
lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
}
else
return _T(""); // should not be successful w/ NULL buffer and 0 size