在网上查找后得知屏蔽脚本错误需要实现IOleCommandTarget接口。但例子大多是MFC的
我是用caxwindow来创建webbroser的,该在哪里,以及如何实现这个接口呢?

解决方案 »

  1.   

    IOleCommandTarget接口可以由webbrowser实例获取
      

  2.   

    我的意思是,我不知道该由哪个类来实现这个接口,以及如何将我实现的实例挂接给webbrowser,以便它可以调用我的实现.
      

  3.   

    直接使用當前窗口類繼承 IOleCommandTarget 接口,調用SetDocUIHandler,貌似是這個名字吧我記不清了
      

  4.   

    你可以让你的當前窗口类继承 IOleCommandTarget 接口 实现Exec接口STDMETHODIMP IAxHostUIHandlerImpl::Exec( 
    /* [unique][in] */ const GUID *pguidCmdGroup,
    /* [in] */ DWORD nCmdID,
    /* [in] */ DWORD nCmdexecopt,
    /* [unique][in] */ VARIANT *pvaIn,
    /* [unique][out][in] */ VARIANT *pvaOut)
    {
    HRESULT hr = pguidCmdGroup ? OLECMDERR_E_UNKNOWNGROUP : OLECMDERR_E_NOTSUPPORTED; if ( pguidCmdGroup && IsEqualGUID(*pguidCmdGroup, CGID_DocHostCommandHandler))
    {
    // 屏蔽脚本错误提示
    if ( nCmdID == OLECMDID_SHOWSCRIPTERROR)
    {
    // 这里只是简单屏蔽掉
    // 如果要进一步处理, 参考:
    // 《How to handle script errors as a WebBrowser control host》
    // http://support.microsoft.com/default.aspx?scid=kb;en-us;261003 (*pvaOut).vt = VT_BOOL;
    // Continue running scripts on the page.
    (*pvaOut).boolVal = VARIANT_FALSE;
    return S_OK;
    }
             return hr;
    }
      

  5.   

    // Continue running scripts on the page.注释是错的 忘删掉了
      

  6.   

    m_pWebBrowser->put_Silent(   VARIANT_TRUE   );   
      

  7.   

    put_silent可以屏蔽错误提示,但不能屏蔽脚本调试提示。
    当IE的禁止其它程序调试脚本选项disable时,走不到exec函数。所以重写似乎也没用。