How To Set and Get Cookies for a URL Using WinInet APIs (196062)



The information in this article applies to:

  • Microsoft Visual Basic Professional Edition for Windows 5.0
  • Microsoft Visual Basic Professional Edition for Windows 6.0
  • Microsoft Visual Basic Enterprise Edition for Windows 5.0
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Windows Internet Services (WinInet)

This article was previously published under Q196062

SUMMARY

From a Visual Basic application, you can set and get cookies on a client that corresponds to a given URL by using the InternetSetCookie and InternetGetCookie APIs from the WinInet.dll.

MORE INFORMATION

  1. Create a new standard .exe project in Visual Basic. Form1 is created by default.
  2. Add the following controls to Form1:
          Control           Name           Caption
          --------------------------------------------------
          Command Button    Command1       InternetSetCookie
          Command Button    Command2       InternetGetCookie
    
    					
  3. In Form1, add the following code in the code window:
          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
    					

REFERENCES

For more information on the WinInet APIs (and specifically the InternetSetCookie and InternetGetCookie functions), please see the WinInet documentation in the MSDN library and the following Web sites:

WinInet.dll:

Cookie APIs:

Modification Type:MinorLast Reviewed:8/30/2004
Keywords:kbAPI kbhowto kbInetDev KB196062