Mark A Matte
markamatte at hotmail.com
Thu Mar 22 09:21:16 CDT 2007
Sample code below from Seth Galitzer.
Thanks,
Mark
Option Compare Database
Option Explicit
'---Start Code---
Const conMaxSize = 255
Const WSADESCRIPTION_LEN = 256
Const WSASYS_Status_Len = 128
Private Type hostent
hName As Long
hAliases As Long
hAddrType As Integer
hLength As Integer
hAddrList As Long
End Type
Private Type WSADATA
wVersion As Integer
wHighVersion As Integer
szDescription(0 To WSADESCRIPTION_LEN) As Byte
szSystemStatus(0 To WSASYS_Status_Len) As Byte
iMaxSockets As Integer
iMaxUdpDg As Integer
lpszVendorInfo As Long
End Type
Private Declare Function WSAStartup Lib "wsock32" _
(ByVal VersionReq As Long, WSADataReturn As WSADATA) As Long
Private Declare Function WSACleanup Lib "wsock32" () As Long
Private Declare Function WSAGetLastError Lib "wsock32" () As Long
Private Declare Function GetHostByName Lib "wsock32" Alias _
"gethostbyname" (ByVal HostName As String) As Long
Private Declare Sub RtlMoveMemory Lib "kernel32" _
(hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)
Public Declare Function GetComputerName Lib "kernel32.dll" Alias _
"GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
'Comments : checks if string is valid IP address
'Parameters:
'Sets :
'Returns :
'Created by: Unknown
'Mod. by : Seth D. Galitzer
'Created : 7/20/00 9:23:26 AM
Private Function IsIP(ByVal strIP As String) As Boolean
On Error GoTo Err_IsIP
On Error Resume Next
Dim t As String: Dim s As String: Dim i As Integer
s = strIP
While InStr(s, ".") <> 0
t = Left(s, InStr(s, ".") - 1)
If IsNumeric(t) And Val(t) >= 0 And Val(t) <= 255 Then
s = Mid(s, InStr(s, ".") + 1)
Else
Exit Function
End If
i = i + 1
Wend
t = s
If IsNumeric(t) And InStr(t, ".") = 0 And Len(t) =
Len(Trim(Str(Val(t)))) And _
Val(t) >= 0 And Val(t) <= 255 And strIP <> "255.255.255.255" And i =
3 _
Then IsIP = True
Exit_IsIP:
Exit Function
Err_IsIP:
Select Case err
Case 0 'insert Errors you wish to ignore here
Resume Next
Case Else 'All other errors will trap
Beep
MsgBox err & ": " & err.Description, , "Error in function
clsIP_Tools.IsIP"
Resume Exit_IsIP
End Select
Resume 0 'FOR TROUBLESHOOTING
End Function
'Comments : resolves host name to IP address
'Parameters:
'Sets :
'Returns :
'Created by: Unknown
'Mod. by : Seth D. Galitzer
'Created : 7/20/00 9:27:00 AM
Private Function AddrByName(ByVal strHost As String) As String
On Error GoTo Err_AddrByName
On Error Resume Next
Dim hostent_addr As Long
Dim hst As hostent
Dim hostip_addr As Long
Dim temp_ip_address() As Byte
Dim i As Integer
Dim ip_address As String
If IsIP(strHost) Then
AddrByName = strHost
Exit Function
End If
hostent_addr = GetHostByName(strHost)
If hostent_addr = 0 Then
err.Raise 9001, , "Can't resolve host"
End If
RtlMoveMemory hst, hostent_addr, LenB(hst)
RtlMoveMemory hostip_addr, hst.hAddrList, 4
ReDim temp_ip_address(1 To hst.hLength)
RtlMoveMemory temp_ip_address(1), hostip_addr, hst.hLength
For i = 1 To hst.hLength
ip_address = ip_address & temp_ip_address(i) & "."
Next
ip_address = Mid(ip_address, 1, Len(ip_address) - 1)
AddrByName = ip_address
Exit_AddrByName:
Exit Function
Err_AddrByName:
Select Case err
Case 0 'insert Errors you wish to ignore here
Resume Next
Case Else 'All other errors will trap
Beep
MsgBox err & ": " & err.Description, , "Error in function
clsIP_Tools.AddrByName"
Resume Exit_AddrByName
End Select
Resume 0 'FOR TROUBLESHOOTING
End Function
Public Function basGetOwnIP() As String
Dim udtWSAData As WSADATA
Dim strName As String
If WSAStartup(257, udtWSAData) Then
err.Raise err.LastDllError, , err.Description
End If
strName = Space(conMaxSize)
GetComputerName strName, conMaxSize
basGetOwnIP = AddrByName(Left(strName, InStr(strName, vbNullChar) - 1))
WSACleanup
'---End Code---
End Function
>From: "JWColby" <jwcolby at colbyconsulting.com>
>Reply-To: Access Developers discussion and problem
>solving<accessd at databaseadvisors.com>
>To: "'Access Developers discussion and problem
>solving'"<accessd at databaseadvisors.com>, <dba-vb at databaseadvisors.com>
>Subject: [AccessD] Obtaining IP Address
>Date: Thu, 22 Mar 2007 09:59:18 -0400
>
>Is there VBA code out there to obtain the IP address of the current
>workstation? I found code that goes through the registry, and it ALMOST
>works, in fact it does work in many instances but...
>
>John W. Colby
>Colby Consulting
>www.ColbyConsulting.com
>
>--
>AccessD mailing list
>AccessD at databaseadvisors.com
>http://databaseadvisors.com/mailman/listinfo/accessd
>Website: http://www.databaseadvisors.com
_________________________________________________________________
The average US Credit Score is 675. The cost to see yours: $0 by Experian.
http://www.freecreditreport.com/pm/default.aspx?sc=660600&bcd=EMAILFOOTERAVERAGE