因为需要webbrowser的文本内容而非图片,所以为了提高访问速度则不需要加载多余的图片flash等信息。
找了些文档,发现都是IE接口开发,实现复杂而且麻烦。为了赶工作量,只好通过一个捷径来实现了。
那就是HOOK Wininet的HttpOpenRequestW函数,webbrowser内部是通过这个函数来响应请求的。
当然,弊端就是,如果程序中其他功能用到了这个函数,那也会直接被pass掉。
//HOOK核心功能,本人用到了CString,可自行替换掉,只需要过滤掉格式名返回0即可,webp什么的都可自行加入.
HINTERNET WINAPI nHttpOpenRequestW(HINTERNET hConnect, LPCWSTR lpszVerb, LPCWSTR lpszObjectName, LPCWSTR lpszVersion, LPCWSTR lpszReferrer, LPCWSTR FAR * lplpszAcceptTypes, DWORD dwFlags, DWORD_PTR dwContext){
static CString sFilter = _T("gif|jpg|png|swf|jpeg");
CString sObjectName = lpszObjectName;
if (sFilter.Find(sObjectName.Right(3)) !=-1)
return (HINTERNET)0;
return hhkHttpOpenRequestW(hConnect,lpszVerb,lpszObjectName,lpszVersion,lpszReferrer,lplpszAcceptTypes,dwFlags,dwContext);
}