Results 1 to 5 of 5

Thread: INTERNET CONNECTION???

  1. #1

    Thread Starter
    Junior Member
    Join Date
    Aug 2000
    Posts
    18

    Cool

    when I log on to the net How can I detect (i.e.; make an application detect) which internet connection I am using out of the many(if u have many!!) listed in the (control panel > dial-up networking)??

  2. #2
    Hyperactive Member
    Join Date
    Mar 2000
    Location
    Canada
    Posts
    264
    forgive me for asking ..
    why should your application care how it was connected to the internet ? once you are connected that's it, there is no real diffrence (apart from speed and Email server).

    can you be more specific about your program ?

    Practically if you know the IP range of each of your providers, then you can know the current one by the IP that you were assigned.

    you can add a winsock control and get your current IP with:

    Winsock1.LocalIP

    or you can get the IP in a more "complecated" way using API's, if you want that I can send you a code.

    did that help ?
    In the beginning the universe was created. This has made a lot of people very angry and is generally regarded as a bad idea.

    - Douglas Adams
    The Hitchhiker's Guide to the Galaxy

  3. #3
    Guest
    Try this:

    Code:
    Retrieve IP Address and Hostname
    
    ' Make a new project. Add a module.
    ' To the form add a command button 'and two text boxes. 
    'get the iphost and ipaddress of system
    
    'Add this code to the module:
    
    Option Explicit
    
    Public Const MAX_WSADescription = 256
    Public Const MAX_WSASYSStatus = 128
    Public Const ERROR_SUCCESS       As Long = 0
    Public Const WS_VERSION_REQD     As Long = &H101
    Public Const WS_VERSION_MAJOR    As Long = WS_VERSION_REQD \ & H100  And &HFF&
    Public Const WS_VERSION_MINOR    As Long = WS_VERSION_REQD And &HFF&
    Public Const MIN_SOCKETS_REQD    As Long = 1
    Public Const SOCKET_ERROR        As Long = -1
    
    Public Type HOSTENT
       hName      As Long
       hAliases   As Long
       hAddrType  As Integer
       hLen       As Integer
       hAddrList  As Long
    End Type
    
    Public Type WSADATA
       wVersion      As Integer
       wHighVersion  As Integer
       szDescription(0 To MAX_WSADescription)   As Byte
       szSystemStatus(0 To MAX_WSASYSStatus)    As Byte
       wMaxSockets   As Integer
       wMaxUDPDG     As Integer
       dwVendorInfo  As Long
    End Type
    
    Public Declare Function WSAGetLastError _
    Lib "WSOCK32.DLL" () As Long
    
    Public Declare Function WSAStartup Lib _
    "WSOCK32.DLL" (ByVal wVersionRequired As Long, _
    lpWSADATA As WSADATA) As Long
       
    Public Declare Function WSACleanup Lib _
    "WSOCK32.DLL" () As Long
    
    Public Declare Function gethostname Lib _
    "WSOCK32.DLL" (ByVal szHost As String, _
    ByVal dwHostLen As Long) As Long
       
    Public Declare Function gethostbyname Lib "WSOCK32.DLL" _
       (ByVal szHost As String) As Long
       
    Public Declare Sub CopyMemory Lib "kernel32" _
    Alias "RtlMoveMemory" (hpvDest As Any, ByVal _
    hpvSource As Long, ByVal cbCopy As Long)
    
    Public Function GetIPAddress() As String
    
       Dim sHostName    As String * 256
       Dim lpHost    As Long
       Dim HOST      As HOSTENT
       Dim dwIPAddr  As Long
       Dim tmpIPAddr() As Byte
       Dim i         As Integer
       Dim sIPAddr  As String
       
       If Not SocketsInitialize() Then
          GetIPAddress = ""
          Exit Function
       End If
        
       If gethostname(sHostName, 256) = SOCKET_ERROR Then
          GetIPAddress = ""
          MsgBox "Windows Sockets error " & Str$(WSAGetLastError()) & _
                  " has occurred. Unable to successfully get Host Name."
          SocketsCleanup
          Exit Function
       End If
        
       sHostName = Trim$(sHostName)
       lpHost = gethostbyname(sHostName)
        
       If lpHost = 0 Then
          GetIPAddress = ""
          MsgBox "Windows Sockets are not responding. " & _
                  "Unable to successfully get Host Name."
          SocketsCleanup
          Exit Function
       End If
        
       CopyMemory HOST, lpHost, Len(HOST)
       CopyMemory dwIPAddr, HOST.hAddrList, 4
       
       ReDim tmpIPAddr(1 To HOST.hLen)
       CopyMemory tmpIPAddr(1), dwIPAddr, HOST.hLen
       
         For i = 1 To HOST.hLen
          sIPAddr = sIPAddr & tmpIPAddr(i) & "."
       Next
      
         GetIPAddress = Mid$(sIPAddr, 1, Len(sIPAddr) - 1)
       
       SocketsCleanup
        
    End Function
    
    Public Function GetIPHostName() As String
    
        Dim sHostName As String * 256
        
        If Not SocketsInitialize() Then
            GetIPHostName = ""
            Exit Function
        End If
        
        If gethostname(sHostName, 256) = SOCKET_ERROR Then
            GetIPHostName = ""
            MsgBox "Windows Sockets error " & Str$(WSAGetLastError()) & _
                    " has occurred.  Unable to successfully get Host Name."
            SocketsCleanup
            Exit Function
        End If
        
        GetIPHostName = Left$(sHostName, InStr(sHostName, Chr(0)) - 1)
        SocketsCleanup
    
    End Function
    
    
    Public Function HiByte(ByVal wParam As Integer)
    
        HiByte = wParam \ & H100  And &HFF&   
    
    End Function
    
    Public Function LoByte(ByVal wParam As Integer)
    
        LoByte = wParam And &HFF&    
    
    End Function
    
    Public Sub SocketsCleanup()
    
        If WSACleanup()<> ERROR_SUCCESS Then
            MsgBox "Socket error occurred in Cleanup."
        End If
        
    End Sub
    
    Public Function SocketsInitialize() As Boolean
    
       Dim WSAD As WSADATA
       Dim sLoByte As String
       Dim sHiByte As String
       
       If WSAStartup(WS_VERSION_REQD, WSAD)<> ERROR_SUCCESS Then
          MsgBox "The 32-bit Windows Socket is not responding."
          SocketsInitialize = False
          Exit Function
       End If
       
       
       If WSAD.wMaxSockets < MIN_SOCKETS_REQD Then
            MsgBox "This application requires a minimum of " & _
                    CStr(MIN_SOCKETS_REQD) & " supported sockets."
            
            SocketsInitialize = False
            Exit Function
        End If
       
       
       If LoByte(WSAD.wVersion) < WS_VERSION_MAJOR Or _
         (LoByte(WSAD.wVersion) = WS_VERSION_MAJOR And _
          HiByte(WSAD.wVersion) < WS_VERSION_MINOR) Then
          
          sHiByte = CStr(HiByte(WSAD.wVersion))
          sLoByte = CStr(LoByte(WSAD.wVersion))
          
          MsgBox "Sockets version " & sLoByte & "." & sHiByte & _
                 " is not supported by 32-bit Windows Sockets."
          
          SocketsInitialize = False
          Exit Function
          
       End If
    
      'must be OK, so lets do it
       SocketsInitialize = True
            
    End Function
    
    Usage:
    
    Text1.text = GetIPHostName() 
    Text2.text = GetIPAddress()

  4. #4

    Thread Starter
    Junior Member
    Join Date
    Aug 2000
    Posts
    18

    thanks

    thank u both for the help. actually i am making a small application which tracks the internet usage of a person. I have actually made the application. then someone asked what if someone has more than one connection and needs to track the usage of only one of them. for that i needed to find out the ISP. thank u. I will try your solution and let u know if it worked.

  5. #5
    old fart Frans C's Avatar
    Join Date
    Oct 1999
    Location
    the Netherlands
    Posts
    2,926
    If you're interested in the name of the connection, you can use this code:
    Code:
    Option Explicit
    Private Declare Function RasEnumConnections Lib "rasapi32.dll" Alias "RasEnumConnectionsA" (lpRasConn As Any, lpcb As Long, lpcConnections As Long) As Long
    
    Private Const RAS_MAXENTRYNAME As Integer = 256
    Private Const RAS_MAXDEVICETYPE As Integer = 16
    Private Const RAS_MAXDEVICENAME As Integer = 128
    Private Const RAS_RASCONNSIZE As Integer = 412
    Private Const ERROR_SUCCESS = 0&
    
    Private Type RasConn
        dwSize As Long
        hRasConn As Long
        szEntryName(RAS_MAXENTRYNAME) As Byte
        szDeviceType(RAS_MAXDEVICETYPE) As Byte
        szDeviceName(RAS_MAXDEVICENAME) As Byte
    End Type
    
    Private Sub Command1_Click()
        Call EnumCon
    End Sub
    
    Private Sub EnumCon()
    Dim i As Long
    Dim lpRasConn(255) As RasConn
    Dim lpcb As Long
    Dim lpcConnections As Long
    Dim retVal As Long
    Dim sEntryName As String
    
        lpRasConn(0).dwSize = RAS_RASCONNSIZE
        lpcb = RAS_MAXENTRYNAME * lpRasConn(0).dwSize
        lpcConnections = 0
        retVal = RasEnumConnections(lpRasConn(0), lpcb, lpcConnections)
        
        If retVal = ERROR_SUCCESS Then
            For i = 0 To lpcConnections - 1
                sEntryName = StrConv(lpRasConn(i).szEntryName, vbUnicode)
                sEntryName = Left(sEntryName, InStr(sEntryName, Chr(0)) - 1)
                List1.AddItem sEntryName
            Next i
        End If
    End Sub
    Credit goes to James Limm who's code from tip 21 I adjusted a bit.(http://www.vb-world.net/internet/tip21.html)

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