在BHO中的
OnNewWindow2(LPDISPATCH *ppDisp, BOOL *Cancel)
{
}
如何知道打开的新窗口的URL?

解决方案 »

  1.   

    在Invoke中的DISPID_BEFORENAVIGATE2中就可以得到了
      

  2.   

    switch (dispidMember)
       {
          // The parameters for this DISPID are as follows:
          // [0]: Cancel flag  - VT_BYREF|VT_BOOL
          // [1]: HTTP headers - VT_BYREF|VT_VARIANT
          // [2]: Address of HTTP POST data  - VT_BYREF|VT_VARIANT 
          // [3]: Target frame name - VT_BYREF|VT_VARIANT 
          // [4]: Option flags - VT_BYREF|VT_VARIANT
          // [5]: URL to navigate to - VT_BYREF|VT_VARIANT
          // [6]: An object that evaluates to the top-level or frame
          //      WebBrowser object corresponding to the event. 
          //
          case DISPID_BEFORENAVIGATE2:
             strEventInfo << "BeforeNavigate2: ";         if (pDispParams->cArgs >= 5 &&
                 pDispParams->rgvarg[5].vt == (VT_BYREF|VT_VARIANT))
             {
                CComVariant varURL(*pDispParams->rgvarg[5].pvarVal);
                varURL.ChangeType(VT_BSTR);            strEventInfo << OLE2T(varURL.bstrVal);
             }
             else
                strEventInfo << "NULL";         strEventInfo << ends;
             break;
    ...