• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

让你的浏览器更强!过滤FLASH、控件等等

发布: 2007-7-01 20:40 | 作者: admin | 来源: | 查看: 25次 | 进入软件测试论坛讨论

领测软件测试网

(本文涉及IE\Inte.net Explorer\WebBrowser2\CHtmlView\name space)

商业网站的广告越做越大。新浪网的巨幅FLASH广告居然充满了整个屏幕!

广大网民上网可受不了这个.....小猫怎么会受得了FLASH的蹂躏~

怎么办呢?一般来说,IE控件可以禁用图片、视频、声音和控件

禁止控件自然就禁止了FLASH,但这样将使浏览器失去大不分功能,不于考虑。

那么过滤整个机器的URL可不可以呢?

可以,但那样底层的操作不是一步两步能实现的,另外....对整个系统以及浏览器的稳定性有较大影响。

也许你会说,做一个127.0.0.1的代理服务器过滤FLASH,再让给自己的浏览器使用该代理。结果会和上面一样,稳定性不好,还可能会和浏览器自身的代理发生冲突。

到底怎么做?呵呵~正题来了!首先感谢畅游的帮助。

利用name space!

下面就说在自编浏览器里的具体实现:(如果你想了解name space的更多内容请访问MSDN网站搜索"name space"关键字)

首先,给你的自编浏览器填加一个ATL类,填加之后CLASS向导会自动给你的工程加一个modul,这些我们都不必理会。

假设所填加的类叫:IAUrl

之后你要做的就是给类填加IInternetProtocolInfo和IInternetProtocol两个接口的实现。并加一个IInternetProtocolSink* m_pProtSink;成员变量。

 

下面要做的很简单:

找到IAUrl的Start函数(实现上面两个接口后回自动出现该函数)

实现如下代码:

STDMETHODIMP IAUrl::Start(
        LPCWSTR szUrl,
        IInternetProtocolSink *pIProtSink,
        IInternetBindInfo *pIBindInfo,
        DWORD grfSTI,
        DWORD dwReserved)
{
 // 检查URL请求的最后4个字符是否为.swf,是的话,就过滤掉

 CString s(szUrl);
 if(s.Right(4)==".swf")
 {
  m_pProtSink = pIProtSink;
  m_pProtSink->AddRef();
  m_pProtSink->ReportResult(S_OK, 0, 0);
  m_pProtSink->Release();
  return S_OK;
 }
 return INET_E_USE_DEFAULT_PROTOCOLHANDLER;
}   

 

针对IAUrl类的工作结束了。下面在你的窗口类里调用IIAUrl接口

给CMainFrame增加2个成员变量:

 IInternetSession* m_pSession;
 IClassFactory* m_pFactory;

然后在程序初始阶段(比如OnCreate里面)

 //注册name space

HRESULT hr = CoGetClassObject(CLSID_IAUrl, CLSCTX_SERVER, NULL, IID_IClassFactory, (void**)&m_pFactory);
 if(hr==S_OK)
 {
  if(CoInternetGetSession(0, &m_pSession, 0)==S_OK)
   m_pSession->RegisterNameSpace(m_pFactory, CLSID_IAUrl, L"http", 0, NULL, 0);
 }

在程序结束的时候

 //注销name space

 if(m_pSession!=NULL)
 {
  m_pSession->UnregisterNameSpace(m_pFactory, L"http");
  m_pSession->Release();
 }
 if(m_pFactory!=NULL)
  m_pFactory->Release();

 }

OK,搞定了,现在你的浏览器可以过滤FLASH了,嘿!效果真不错!

下载IAUrl类原代码:(3KB)

 

    


延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网