一个基于CHtmlView活着IE控件的浏览器,不显示FLASH是如何做到的呢?可以不显示图片、视频等都可以实现,FLASH不知道如何实现

解决方案 »

  1.   

    实现IDispatch的Invoke接口中的DISPID_AMBIENT_DLCONTROL类型,将此DLCTL_NO_RUNACTIVEXCTLS标记置上即可HRESULT CWebBrowserImpl::Invoke( 
       /* [in] */ DISPID dispIdMember,
       /* [in] */ REFIID riid,
       /* [in] */ LCID lcid,
       /* [in] */ WORD wFlags,
       /* [out][in] */ DISPPARAMS *pDispParams,
       /* [out] */ VARIANT *pVarResult,
       /* [out] */ EXCEPINFO *pExcepInfo,
       /* [out] */ UINT *puArgErr)
    {
    switch (dispIdMember)
    {
    case DISPID_AMBIENT_DLCONTROL:
    if(pVarResult==NULL)
    {
    return DISP_E_MEMBERNOTFOUND;
    }
    pVarResult->vt = VT_I4;
    pVarResult->lVal = DLCTL_DLIMAGES | DLCTL_VIDEOS | DLCTL_BGSOUNDS; if (m_bActiveX)
    {
    pVarResult->lVal |= DLCTL_NO_RUNACTIVEXCTLS;// 禁止运行ActiveX
    }
    break;
      

  2.   

    chtmlview的话直接重载OnAmbientProperty事件就行了
    应该是 DLCTL_NO_RUNACTIVEXCTLS设置下就行了
      

  3.   

    但是设置这个,ACTIVE控件也就不能运行了,现在只想不显示FLASH,控件还是允许运行的,该如何实现?
      

  4.   

    那找到flash的activex的guid然后在ondocumentcomplete里屏蔽掉
      

  5.   

    考虑下hook,如抓到flash元素就过滤掉
      

  6.   

    "flash的activex的guid然后在ondocumentcomplete"这种方法没有起到屏蔽下载的作用,顶多只是不显示,HOOK的方法,虽然可以拦截到FLASH,但是IE会认为没有下载完成,始终不响应ondocumentcomplete
      

  7.   

    如果后缀名固定是swf的话,可以通过异步插入协议来判断,
    否则的话不知道如何处理