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 13.119 mal aufgerufen.
Anzeige
![]() ![]() ![]() (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. |
Neu! sevPopUp 2.0 ![]() Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Tipp des Monats ![]() Matthias Kozlowski Umlaute konvertieren Ersetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) 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. |