Results 1 to 2 of 2

Thread: API call for getting your IP

  1. #1

    Thread Starter
    Addicted Member
    Join Date
    Apr 2002
    Posts
    183

    API call for getting your IP

    Is there an API call that returns your IP address?

    I know theres other ways to get it, but I would like an API call for it.

    Thanks

  2. #2
    Frenzied Member
    Join Date
    Jul 2002
    Posts
    1,370
    Code:
    Private Const MAX_ADAPTER_NAME_LENGTH         As Long = 256
    Private Const MAX_ADAPTER_DESCRIPTION_LENGTH  As Long = 128
    Private Const MAX_ADAPTER_ADDRESS_LENGTH      As Long = 8
    Private Const ERROR_SUCCESS  As Long = 0
    
    Private Type IP_ADDRESS_STRING
        IpAddr(0 To 15)  As Byte
    End Type
    
    Private Type IP_MASK_STRING
        IpMask(0 To 15)  As Byte
    End Type
    
    Private Type IP_ADDR_STRING
        dwNext     As Long
        IpAddress  As IP_ADDRESS_STRING
        IpMask     As IP_MASK_STRING
        dwContext  As Long
    End Type
    
    Private Type IP_ADAPTER_INFO
      dwNext                As Long
      ComboIndex            As Long  'reserved
      sAdapterName(0 To (MAX_ADAPTER_NAME_LENGTH + 3))        As Byte
      sDescription(0 To (MAX_ADAPTER_DESCRIPTION_LENGTH + 3)) As Byte
      dwAddressLength       As Long
      sIPAddress(0 To (MAX_ADAPTER_ADDRESS_LENGTH - 1))       As Byte
      dwIndex               As Long
      uType                 As Long
      uDhcpEnabled          As Long
      CurrentIpAddress      As Long
      IpAddressList         As IP_ADDR_STRING
      GatewayList           As IP_ADDR_STRING
      DhcpServer            As IP_ADDR_STRING
      bHaveWins             As Long
      PrimaryWinsServer     As IP_ADDR_STRING
      SecondaryWinsServer   As IP_ADDR_STRING
      LeaseObtained         As Long
      LeaseExpires          As Long
    End Type
    
    Private Declare Function GetAdaptersInfo Lib "iphlpapi.dll" _
      (pTcpTable As Any, _
       pdwSize As Long) As Long
       
    Private Declare Sub CopyMemory Lib "kernel32" _
       Alias "RtlMoveMemory" _
      (dst As Any, _
       src As Any, _
       ByVal bcount As Long)
       
    
    Private Sub Command1_Click()
    
       Text1.Text = LocalIPAddress()
    
    End Sub
    
       
    Private Function LocalIPAddress() As String
       
      'api vars
       Dim cbRequired  As Long
       Dim buff()      As Byte
       Dim Adapter     As IP_ADAPTER_INFO
       Dim AdapterStr  As IP_ADDR_STRING
        
      'working vars
       Dim ptr1        As Long
       Dim sIPAddr     As String
       Dim found       As Boolean
       
       Call GetAdaptersInfo(ByVal 0&, cbRequired)
    
       If cbRequired > 0 Then
        
          ReDim buff(0 To cbRequired - 1) As Byte
          
          If GetAdaptersInfo(buff(0), cbRequired) = ERROR_SUCCESS Then
          
            'get a pointer to the data stored in buff()
             ptr1 = VarPtr(buff(0))
    
             Do While (ptr1 <> 0) 'And (found = False)
                CopyMemory Adapter, ByVal ptr1, LenB(Adapter)
             
                With Adapter
                           
                  'the DHCP IP address is in the
                  'IpAddress.IpAddr member
                     
                   sIPAddr = TrimNull(StrConv(.IpAddressList.IpAddress.IpAddr, vbUnicode))
                      
                   If Len(sIPAddr) > 0 Then
                      found = True
                      Exit Do
                   End If
    
                   ptr1 = .dwNext
                                  
                End With 
                
             Loop  
    
          End If  'If GetAdaptersInfo
       End If  'If cbRequired > 0
       LocalIPAddress = sIPAddr
          
    End Function
    
    
    Private Function TrimNull(item As String)
    
        Dim pos As Integer
       
       'double check that there is a chr$(0) in the string
        pos = InStr(item, Chr$(0))
        If pos Then
              TrimNull = Left$(item, pos - 1)
        Else: TrimNull = item
        End If
      
    End Function

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width