按照凤之焚、jameshooo两位大牛的思路做mimefilter
在ReportData()中可以得到下载的数据了,但是还有一个过滤图片的需要。
我在Start()方法中如下实现:
...
if(_strnicmp(str,".gif",4) == 0)//后缀是gif
{
pIProtSink->ReportResult(S_FALSE, 0, 0); // 这一行试过取消
return S_OK; // 试过 INET_E_DATA_NOT_AVAILABLE、INET_E_DOWNLOAD_FAILURE、INET_E_INVALID_URL、E_ABORT
}
就是以上简单的代码实现,注释中还写了我多种艰苦尝试,但是仍然发现ie控件顽强地、执着地、坚持不懈地帮我下载gif图片,抓包时也发现,get recv都是正常的。
那么,IInternetProtocolRoot.Start()方法到底应该如何实现呢?
filter是正常注册的,跟踪代码也发现能进入到这个if节区。
[解决办法]
因为安全原因,jpg和gif的显示无法自定义
参考http://msdn.microsoft.com/en-us/library/aa753599(v=VS.85).aspx
[解决办法]
为什么只调用ReportResult?为什么不调用ReportData?MIMEFILTER里面的调用关系错综复杂,一个不慎你就不知道IE下一步会干啥,多试试。
[解决办法]
pIProtSink->ReportResult(E_ABORT, 0, 0); 试试
[解决办法]
据我所知,不能通过在start中返回错误结束一次请求,需调用Reportresult来通知结束。