如题!我现在能想到的方法是在DISPID_BEFORENAVIGATE2事件中判断*pDispParams->rgvarg[1].pvarVal是否包含application/x-www-form-urlencoded来决定是否为POST动作!请问除了这个方法之外是否还有其他简便的方法?

解决方案 »

  1.   

    检查DISPID_BEFORENAVIGATE2事件的PostData参数
      

  2.   

    http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/reference/ifaces/dwebbrowserevents2/beforenavigate2.asp
    PostData是第5个参数
      

  3.   

    我是在Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pvarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)里实现DISPID_BEFORENAVIGATE2事件的
    下面是查手册所得的资料:
    // 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. 
    // [6]: type = 9 VT_DISPATCH所以应该是(pDispParams->rgvarg[2].vt != VT_EMPTY)来判断,但是就是不行:(
      

  4.   

    判断一下数据长度是否为0
    postdata的参数类型应该是数组引用(VT_BYREF|VT_ARRAY)
      

  5.   

    好的,非常感谢您的热心帮助!Thank you!