Function LocalIPAddress() As String
[B]' Ermittelt die eigene IP Adresse, die für die Verbindung zur Fritzbox benutzt wird.
' Dazu werden alle verfügbaren Netzadapter auf das gleiche Subnetz zu dem der FritzBox verglichen,
' was momentan noch zu Problemen führt, wenn die FritzBox in einem anderen IP-Raum steht[/B]
On Error Resume Next
'für API-Aufrufe
Dim cbRequired As Long
Dim buff() As Byte
Dim Adapter As IP_ADAPTER_INFO
Dim AdapterStr As IP_ADDR_STRING
'allgemeine Variablen
Dim ptr1 As Long
Dim sIPAddr As String
Dim sAllAddr As String
Dim sGWAddr As String
Dim FB_ADD As String
Dim pos As Long
Dim DateiPfad As String
DateiPfad = GetSetting("FritzBox", "Optionen", "TBini", StandardPfad & "\Einstellungen.ini")
FB_ADD = GetINI(DateiPfad, "Optionen", "TBFBAdr", "192.168.178.1")
[B]
' Ggf. die Adresse der Gegenstelle auflösen[/B]
Ping FB_ADD
pos = InStrRev(FB_ADD, ".", , vbTextCompare)
FB_ADD = Left(FB_ADD, pos)
GetAdaptersInfo ByVal 0&, cbRequired
If cbRequired > 0 Then
ReDim buff(0 To cbRequired - 1) As Byte
If GetAdaptersInfo(buff(0), cbRequired) = 0 Then
'Zeiger (Pointer) zu den gespeicherten Daten (buff) ermitteln
ptr1 = VarPtr(buff(0))
'ptr1 ist 0 wenn keine weiteren Adapter vorhanden sind
Do While Not ptr1 = 0
'aktuellen Zeiger auf Datenstruktur (Adapter) zuweisen
CopyMemory Adapter, ByVal ptr1, LenB(Adapter)
With Adapter
'IP-Adresse des Adapters auslesen
sIPAddr = TrimNull(StrConv(.IpAddressList.ipaddress.ipAddr, vbUnicode))
' IP-Adresse des zugehörigen Gateways auslesen
sGWAddr = TrimNull(StrConv(.GatewayList.ipaddress.ipAddr, vbUnicode))
If Not InStr(1, sGWAddr, FB_ADD, vbTextCompare) = 0 _
Or Not InStr(1, sIPAddr, FB_ADD, vbTextCompare) = 0 Then
LocalIPAddress = sIPAddr
End If
'[B]Pointer [/B]auf nächsten Adapter setzen
ptr1 = .dwNext
End With
Loop
End If
End If
End Function