Die lokale Rechner IP-Adresse unterscheidet sich bekanntlich von der IP-Adresse mit der man online im Internet unterwegs ist. Durch Aufruf der Internetseite http://checkip.dyndns.org bekommt seine eigene Online IP-Adresse angezeigt. Was liegt also näher, als einfach den Inhalt dieser Seite auszulesen, wenn man zur Laufzeit die Online IP-Adresse des Anwenders ermitteln muss. Option Explicit ' benötigte API-Deklarationen Private Declare Function URLDownloadToFile Lib "urlmon" _ Alias "URLDownloadToFileA" ( _ ByVal pCaller As Long, _ ByVal szURL As String, _ ByVal szFileName As String, _ ByVal dwReserved As Long, _ ByVal lpfnCB As Long) As Long Private Declare Function DeleteUrlCacheEntry Lib "wininet.dll" _ Alias "DeleteUrlCacheEntryA" ( _ ByVal lpszUrlName As String) As Long ' Datei-Download mit oder ohne Leerung des URL-Cache Public Function FileDownload(ByVal sURL As String, _ ByVal sLocalFile As String, _ Optional ByVal bClearCache As Boolean = True) As Boolean Dim lResult As Long ' URL-Cache leeren? If bClearCache Then lResult = DeleteUrlCacheEntry(sURL) End If ' Download ausführen Screen.MousePointer = vbHourglass lResult = URLDownloadToFile(0, sURL, sLocalFile, 0, 0) Screen.MousePointer = vbNormal FileDownload = (lResult = 0) End Function ' Eigene Online IP-Adresse ermitteln Public Function GetOnlineIPAddress() As String Dim sURL As String Dim sTempFile As String Dim nResult As Long Dim sBuffer As String Dim sIP As String ' URL, die uns die eigene Online IP-Adresse verrät sURL = "http://checkip.dyndns.org" ' temporärer Datei (ggf. löschen, falls vorhanden) sTempFile = App.Path & "\ip.tmp" If Len(Dir$(sTempFile, vbNormal)) > 0 Then Kill sTempFile If FileDownload(sURL, sTempFile) Then ' temporäre Datei auslesen sBuffer = ReadFile(sTempFile) ' Inhalt prüfen If InStr(1, sBuffer, "Current IP Address: ", vbTextCompare) > 0 Then ' IP-Adresse aus Inhalt extrahieren sBuffer = Mid$(sBuffer, InStr(1, sBuffer, "Current IP Address: ", vbTextCompare) + 20) If InStr(sBuffer, "<") > 0 Then ' Eigene IP-Adresse zurückgeben sIP = Left$(sBuffer, InStr(sBuffer, "<") - 1) End If End If End If GetOnlineIPAddress = sIP End Function ' Hilfsfunktion: Inhalt der angegebenen Datei auslesen Private Function ReadFile(ByVal sFile As String) As String Dim F As Integer Dim sBuffer As String F = FreeFile Open sFile For Binary As #F sBuffer = Space$(LOF(F)) Get #F, , sBuffer Close #F ReadFile = sBuffer End Function Aufrufbeispiel: ' Online IP-Adresse ermitteln Dim sIP As String sIP = GetOnlineIPAddress() If Len(sIP) > 0 Then MsgBox "Eigene Online IP-Adresse: " & sIP Else MsgBox "Die Online IP-Adresse konnte nicht ermittelt werden!" End If Dieser Tipp wurde bereits 12.377 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
TOP! Unser Nr. 1 Neu! sevDataGrid 3.0 Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |