Private Declare Function InternetSetCookie Lib "wininet.dll" Alias "InternetSetCookieA" _
        (ByVal lpszUrlName As String, _
         ByVal lpszCookieName As String, _
         ByVal lpszCookieData As String) As BooleanPrivate Declare Function InternetGetCookie Lib "wininet.dll" Alias "InternetGetCookieA" _
        (ByVal lpszUrlName As String, _
         ByVal lpszCookieName As String, _
         ByVal lpszCookieData As String, _
         lpdwSize As Long) As BooleanPrivate Function SetCookie(ByVal UrlName As String, ByVal CookieName As String, ByVal CookieData As String) As Boolean
        Dim blnReturn     As Boolean
        blnReturn = InternetSetCookie(UrlName, CookieName, CookieData)
        'If blnReturn = False Then MsgBox "Make   Cookie   Operation   Failed!", vbCritical
        SetCookie = blnReturn
End FunctionPrivate Function GetCookie(ByVal UrlName As String, ByVal CookieName As String) As String
        Dim strCookieText     As String * 256
        Dim blnReturn     As Boolean
        blnReturn = InternetGetCookie(UrlName, CookieName, strCookieText, 255)
        If blnReturn = False Then
            'MsgBox "Get   Cookie   Operation   Failed!", vbCritical
            GetCookie = "Error!"
        Else
            GetCookie = strCookieText
        End If
End FunctionPrivate Sub Command1_Click()
    MsgBox SetCookie("http://community.csdn.net/", "fio", "Test")
    MsgBox GetCookie("http://community.csdn.net/", "fio")
End SubGetCookie取不出cookie来,其他网站也是,这2个API应该怎么用啊??
怎么样可以用不同的cookie刷新webbrowser登陆不同的用户名啊 ?

解决方案 »

  1.   

    Option Explicit      ' No more data is available.      Const ERROR_NO_MORE_ITEMS = 259      ' The data area passed to a system call is too small.      Const ERROR_INSUFFICIENT_BUFFER = 122      Private Declare Function InternetSetCookie Lib "wininet.dll" _       Alias "InternetSetCookieA" _       (ByVal lpszUrlName As String, _       ByVal lpszCookieName As String, _       ByVal lpszCookieData As String) As Boolean      Private Declare Function InternetGetCookie Lib "wininet.dll" _       Alias "InternetGetCookieA" _       (ByVal lpszUrlName As String, _       ByVal lpszCookieName As String, _       ByVal lpszCookieData As String, _       lpdwSize As Long) As Boolean      Private Sub Command1_Click()       Dim bRet As Boolean       bRet = InternetSetCookie("http://xxxx/xxxx.htm", _        "Test", "Sent as Test via VB")       If bRet = False Then           MsgBox "Failed"       End If      End Sub      Private Sub Command2_Click()        Dim sCookieVal As String * 256        Dim bRet As Boolean        bRet = InternetGetCookie("http://xxxx/xxxx.htm", _         "Test", sCookieVal, 255)        If bRet = False Then          MsgBox "Failed"        Else          MsgBox sCookieVal        End If      End Sub
      

  2.   

    Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
    某些是没有的
      

  3.   

    不可能是网站没有cookie的原因啦,测试了好几个有cookie的网站都返回Error
    肯定是那里写法有问题吧....
      

  4.   

    Option ExplicitPrivate Declare Function InternetSetCookie Lib "wininet.dll" Alias "InternetSetCookieA" _
      (ByVal lpszUrlName As String, _
      ByVal lpszCookieName As String, _
      ByVal lpszCookieData As String) As BooleanPrivate Declare Function InternetGetCookie Lib "wininet.dll" Alias "InternetGetCookieA" _
      (ByVal lpszUrlName As String, _
      ByVal lpszCookieName As String, _
      ByVal lpszCookieData As String, _
      lpdwSize As Long) As BooleanPrivate Function SetCookie(ByVal UrlName As String, ByVal CookieName As String, ByVal CookieData As String) As Boolean
      Dim blnReturn As Boolean
      blnReturn = InternetSetCookie(UrlName, CookieName, CookieData)
      'If blnReturn = False Then MsgBox "Make Cookie Operation Failed!", vbCritical
      SetCookie = blnReturn
    End FunctionPrivate Function GetCookie(ByVal UrlName As String, ByVal CookieName As String) As String
      Dim strCookieText As String
      Dim blnReturn As Boolean
      Dim lngCookie As Long 'cookie需要的长度
      blnReturn = InternetGetCookie(UrlName, CookieName, strCookieText, lngCookie)
      strCookieText = Space$(lngCookie)
      blnReturn = InternetGetCookie(UrlName, CookieName, strCookieText, lngCookie)  If blnReturn = False Then
      'MsgBox "Get Cookie Operation Failed!", vbCritical
      GetCookie = "Error!"
      'Debug.Print Err.LastDllError
      Else
      GetCookie = strCookieText
      End If
    End FunctionPrivate Sub Command1_Click()
      MsgBox SetCookie("http://community.csdn.net/", "fio", "Test")
      MsgBox GetCookie("http://community.csdn.net/", "fio")
    End Sub
      

  5.   

    API调用的问题,相当然认为cookie少于256个字符
      

  6.   


    厉害啊,我这个代码是从msdn上复制来的啊,msdn怎么也犯这种错误啊
    而且我认为他那个 String * 256 也错了,应该是String * 255,后面那个才应该是256,缓冲区应该大于字符长度才对嘛,是吧