按照凤之焚、jameshooo两位大牛的思路做mimefilter

biganchor 2012-07-08 05:43:01
在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节区。
...全文
203 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
biganchor 2012-10-15
  • 打赏
  • 举报
回复
mime filter真不稳定,用hook wininet取代了。
lcgboy 2012-07-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

pIProtSink->ReportResult(E_ABORT, 0, 0); 试试
[/Quote]

据我所知,不能通过在start中返回错误结束一次请求,需调用Reportresult来通知结束。
lcgboy 2012-07-15
  • 打赏
  • 举报
回复
pIProtSink->ReportResult(E_ABORT, 0, 0); 试试
蒋晟 2012-07-09
  • 打赏
  • 举报
回复
因为安全原因,jpg和gif的显示无法自定义
参考http://msdn.microsoft.com/en-us/library/aa753599(v=VS.85).aspx
biganchor 2012-07-09
  • 打赏
  • 举报
回复
ReportData()貌视是下载时、下载后取数据用的。[Quote=引用 6 楼 的回复:]

为什么只调用ReportResult?为什么不调用ReportData?MIMEFILTER里面的调用关系错综复杂,一个不慎你就不知道IE下一步会干啥,多试试。
[/Quote]
redui 2012-07-09
  • 打赏
  • 举报
回复
为什么只调用ReportResult?为什么不调用ReportData?MIMEFILTER里面的调用关系错综复杂,一个不慎你就不知道IE下一步会干啥,多试试。
biganchor 2012-07-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

因为安全原因,jpg和gif的显示无法自定义
参考http://msdn.microsoft.com/en-us/library/aa753599(v=VS.85).aspx
[/Quote]蒋大牛就是厉害,又show出一个ie的特性出来,虽然跟这个Asynchronous Pluggable Protocols没有关系,但又让我见识了ie的又一个特性,也不错。

Internet Explorer handles Graphics Interchange Format (GIF) and JPEG images (MIME types image/gif, image/jpeg, and image/pjpeg) differently from other image formats; it renders them internally and does not send them through the IImageDecodeFilter interface. Refer to MIME Type Detection in Internet Explorer.

这一句是蒋大牛说安全问题。
我这里并不想使用IImageDecodeFilter接口影响图片的渲染过程。我想在下载过程中,“过滤”掉图片的下载。
biganchor 2012-07-08
  • 打赏
  • 举报
回复
呵呵,过来帮忙领分也不错
tcige 2012-07-08
  • 打赏
  • 举报
回复
看成minifilter了,我想呢,jameshooo还懂这个
biganchor 2012-07-08
  • 打赏
  • 举报
回复
怎么没人呢?自己顶一下

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧