Aktualisiert: 18.05.2007
Newest
  Tipps & Tricks
1.) Anpassung Controls an ein Formular (VB6)
2.) Kopier-Wiederaufnahme (VB6)
3.) Uhrzeit - alle Kürzel (VB6)
4.) Eigene IP-Addresse auslesen (VB6)
5.) Felder - Arrays (allgemeines, deklarieren) (VB.NET)
  Tutorials
1.) Prüfziffernverfahren österreichischer Sozialversic (VB6)
2.) Kommunikation zwischen Formularen bzw. Modulen (VB.NET)
3.) Musikdatein mittels API abspielen (VB6)
4.) Inputbox mit zusätzlichem Button (VB6)
5.) Access & MySQL | Teil 2/2 (VB6)
  Neueste Kommentare
  (letzten 50)
Thomas(21.02.2007 - 14:03)
Dag Johans..(16.11.2006 - 03:44)
Sebi2020(20.10.2006 - 21:43)
Suchen


Grundlagen  (20) | Grafik  (9) | Dateisystem  (9) | Multimedia  (3) | Datenbank  (5)
Drucker  (7) | System  (12) | Internet  (2) | Controls  (16) | Sonstiges  (12)
 95 Tipps & Tricks in der Datenbank 
 System > Eigene IP-Addresse auslesen     Kommentar schreiben/ansehen  |  von backslash 
Und zwar so:


Private Type WSAData
wVersion As Integer
wHighVersion As Integer
szDescription (0 To 256)
szSystemStatus (0 To 128)
wMaxSockets As Integer
dwVendorInfo As Long
End Type

Private Declare Function WSAStartup Lib "WSOCK32.DLL" _
(Byval wVersionRequired As Long, lpWSAData As WSAData) As Long
Private Declare Function WSACleanup Lib "WSOCK32.DLL" () AS Long
Private Declare Function gethostname Lib "WSOCK32.DLL" _
(Byval szHost As String, Byval dwHostLen As Long) As Long
Private Declare Function gethostbyname Lib "WSOCK32.DLL" _
(Byval szHost As String) As Long
'Achtung: Abgewandelte API-Funktion !!!
Private Declare Sub CopyMemoryIP Lib "kernel32" Alias _
"RtlMoveMemory" (hpvDest As Any, Byval hpvSource As Long, _
Byval cbCopy As Long)

Private Function GetIPAddress() As String
Dim wsa As WSAData
Dim rVal As Long
Dim sHost As String * 256
Dim lp As Long
Dim lpa As Long
Dim IpAdr(0 To 3) As Byte

rVal = WSAStartup((2 + &H100), wsa)
If rVal = 0 Then
gethostname sHost, 256
lp = gethostbyname(sHost)
If lp Then
CopyMemoryIP lpa, lp + 16, 4
CopyMemoryIP IPAdr(0), lpa, 4
GetIPAddress = CStr(IPAdr(0)) + "." + _
CStr(IPAdr(1)) + "." + _
CStr(IPAdr(2)) + "." + _
CStr(IPAdr(3))
End if
WSACleanup
End If
End Function


Der Trick daran: Die sogenannte "HostEnt"-Struktur wird komplett überflogen und nur die Addresse ab dem 16. Byte gelesen. Sie zeigt auf die erste IP-Addresse und dies ist die Standard-IP-Addresse.
Selbstverständlich funktioniert die Funktion auch unter VBA ;)
dazugefügt am: 09.07.2004 | bereits betrachtet: 62278 mal   


 6 Kommentare      TOP  
Name:  
Email:  
Kommentar:  
   
 6.)  Lordchen  schrieb am 10.01.2006
Funktioniert einwandfrei. Allerdings muss man die Zeilen richtig ordnen, die hier durcheinandergeschmissen sind.
 5.)  Lordchen  schrieb am 26.04.2005
Zu Hatsch: Nicht jeder schleppt für so eine Info ein komplettes Control mit sich herum - oder? Viel zu viel Overhead.
 4.)  Hatsch  schrieb am 04.09.2004
Das ganze würde einfacher gehen mit einem api-aufruf der sich Winsock nennt!!! ich brauche nur bei komponenten winsock aktivieren dann mach ich noch ein label und das würde z.B. so aussehen: Private Sub Form_Load label1.caption = winsock1.localip end sub Bisschen weniger aufwand mit selben ergebniss!!! Freundliche Grüsse an den Poster
 3.)  VFensterB  schrieb am 02.09.2004
Es wäre schön, würdet ihr diese Dinge direkt dem Autor mitteilen. Dieser wird dann entsprechend reagieren.
 2.)  Gusu  schrieb am 01.09.2004
Hallo liebe Leute, bei XP stürzt bei Aufruf der Funktion VB total ab!
 1.)  Aja  schrieb am 14.08.2004
und funktioniert auch toll hinter einem Router *scnr*
Empfehlen Sie diese Seite | zu Favoriten hinzufügen  Copyright 2004 by visualbasic.at