不用showModelessDialog(),用window.open()就OK了<script language="javascript">
window.opener="";
window.open("page.htm","login","toolbar=no,location=no,scrollbars=no,menubars=no,resizable=no,width=258,height=150,left=250,top=200");
window.close();
</script>

解决方案 »

  1.   

    父窗口调用window.open时加个延时,保证在父窗口页面下载完毕后调用.拦截的原理:只捕捉DISPID_NEWWINDOW2.
    STDMETHODIMP CIEPlugCom::Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pvarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
    {
    USES_CONVERSION;

    if(!pDispParams)
    return E_INVALIDARG;

    LPOLESTR lpURL=NULL;
    m_spWebBrowser2->get_LocationURL(&lpURL);
    switch(dispidMember)
    {
    case DISPID_BEFORENAVIGATE2:
    char *pURL;
    if(pDispParams->cArgs >=5&&pDispParams->rgvarg[5].vt==(VT_BYREF|VT_VARIANT))
    {
                CComVariant varURL(*pDispParams->rgvarg[5].pvarVal);
                varURL.ChangeType(VT_BSTR);
    //转化要访问的网址为char *型
    pURL=OLE2A(varURL.bstrVal);
    }
    //如果正要访问的网址为要被拦截的,则停止
    //IDS_URL
    if(strstr(pURL,"microsoft.com")!=NULL)
    {
                *pDispParams->rgvarg[0].pboolVal=TRUE;
        MessageBox(NULL,"当前系统禁止浏览该页","警告",MB_ICONSTOP);
    return S_OK;
    }
    break;
    case DISPID_NAVIGATECOMPLETE2:
    break;
    case DISPID_DOCUMENTCOMPLETE:
    break;
    case DISPID_DOWNLOADBEGIN:
    break;
    case DISPID_DOWNLOADCOMPLETE:
    break;
    case DISPID_NEWWINDOW2:
    READYSTATE m_ReadyState;
            m_spWebBrowser2->get_ReadyState(&m_ReadyState);
            if(m_ReadyState!=READYSTATE_COMPLETE)
            {
                *pDispParams->rgvarg[0].pboolVal=TRUE;
                return S_OK;
            }
    else
    {
                *pDispParams->rgvarg[0].pboolVal=FALSE;
                return S_OK;
    }
        break;
    case DISPID_QUIT:
    break;
    default:
    break;
    }
    return S_OK;
    }
      

  2.   

    没用啊,在.cs下:
    Page.RegisterStartupScript("openc","<script>window.setInterval('CloseWin()',10000)</script>");
    还是被拦截了