| |
|
Lokalen Hostnamen/Computernamen ermitteln II |
| Kurzinfo: |
 |
Diese Funktion ermittelt den lokalen Hostnamen
per API über den wsock32 |
| Access-Version(en): |
|
Access 97, 2000 und XP |
| Autor: |
 |
Stefan Kulpa |
| Homepage: |
 |
http://www.kulpa-online.de |
|
| | | | 
|
Auf der AP-Access-Tools Vol.1 finden Sie weitere 320
Tipps & Tricks sowie 250 Access-Beispiel/Anwendungen mit offenen Quellcode!
Die Access-Tools-CD mit über 400 MByte Inhalt - für Access- und VB-Entwickler
256 Access-Beispiele mit offenem Code
45 Add-Ins und ActiveX-Komponenten (Freeware)
16 VB-Projekt inkl. Source
321 Tipps & Tricks für Access und VB
Plus 11 Entwicklerversionen (9 davon mit Source!)
Plus 3 Vollversionen und
Plus riesiger Datenpool
Holen Sie sich jetzt Ihre AP-Access-Tools-CD zum Superpreis von nur EUR 24,95! | | | | |
|
Um den lokalen Hostnamen einer lokalen IP-Adresse ermitteln zu können, muss man auf das Win32-API zurückgreifen.
Hinweis: diese Funktion ist nicht dafür geeignet, IP-Adressen im
Internet zu benutzen, um deren Hostnamen zu ermitteln!
| Code: | Const WSADESCRIPTION_LEN As Long = 256
Const WSASYS_STATUS_LEN As Long = 128
Const WS_VERSION_REQD As Long = &H101
Const IP_SUCCESS As Long = 0
Const SOCKET_ERROR As Long = -1
Const AF_INET As Long = 2
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
imaxudp As Integer
lpszvenderinfo As Long
End Type
Declare Function WSAStartup Lib "wsock32.dll" _
(ByVal VersionReq As Long, _
WSADataReturn As WSADATA) As Long
Declare Function WSACleanup Lib "wsock32.dll" () As Long
Declare Function inet_addr Lib "wsock32.dll" _
(ByVal s As String) As Long
Declare Function gethostbyaddr Lib "wsock32.dll" _
(haddr As Long, _
ByVal hnlen As Long, _
ByVal addrtype As Long) As Long
Declare Sub CopyMemory Lib "kernel32" Alias _
"RtlMoveMemory" _
(xDest As Any, _
xSource As Any, _
ByVal nbytes As Long)
Declare Function lstrlen Lib "kernel32" Alias _
"lstrlenA" _
(lpString As Any) As Long
Function SocketsInitialize() As Boolean
Dim WSAD As WSADATA
SocketsInitialize = WSAStartup(WS_VERSION_REQD, WSAD) = IP_SUCCESS
End Function
Function GetHostNameFromIP(ByVal sAddress As String) As String
Dim lPtrHostent As Long
Dim lAddress As Long
Dim lBytes As Long
If SocketsInitialize() Then
'// String-Adresse in Long konvertieren
lAddress = inet_addr(sAddress)
If lAddress <> SOCKET_ERROR Then
'// Den Pointer zur HOSTENT-Struktur ermitteln,
'// die den Namen und die Adresse enthält.
lPtrHostent = gethostbyaddr(lAddress, 4, AF_INET)
If lPtrHostent <> 0 Then
'// Adresse konvertieren und Hostnamen auflösen
CopyMemory lPtrHostent, ByVal lPtrHostent, 4
lBytes = lstrlen(ByVal lPtrHostent)
If lBytes > 0 Then
sAddress = Space$(lBytes)
CopyMemory ByVal sAddress, ByVal lPtrHostent, lBytes
GetHostNameFromIP = sAddress
End If 'lBytes > 0
Else
MsgBox "Aufruf ist fehlgeschlagen!", vbExclamation
End If 'lPtrHostent <> 0
Call WSACleanup
Else
MsgBox "Ungültige IP-Adresse!", vbExclamation
End If 'lAddress <> SOCKET_ERROR
Else
MsgBox "Sockets konnte nicht initialisiert werden!", vbExclamation
End If 'SocketsInitialize()
End Function
|
Wird nun die Funktion GetHostNameFromIP mit Übergabe einer lokalen
IP-Adresse übergeben, erhält man den entsprechenden Hostnamen.
Copyright 2000-2003 Microsys
Kramer– Alle Rechte vorbehalten - Der Download von Tipps und
Programmen von den Seiten www.access-paradies.de erfolgt auf eigene
Gefahr. Microsys Kramer haftet nicht für Schäden, die
aus der Installation oder der Nutzung von Tipps oder Software aus
dem Download-Bereich erfolgen. Trotz aktueller Virenprüfung
ist eine Haftung für Schäden und Beeinträchtigungen
durch Computerviren ausgeschlossen. Schadenersatzansprüche,
aus welchem Rechtsgrund auch immer, sind ausgeschlossen, wenn Microsys
Kramer nicht Vorsatz oder grobe Fahrlässigkeit zu vertreten
hat. Dies gilt auch für Ansprüche auf Ersatz von Folgeschäden
wie Datenverlust. |