Code:
Option Explicit
Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, ByRef nSize As Long) As Long
' "GetComputerNameA" (ByVal lpBuffer As String, ByRef nSize As Long) As Long
Function ComputerName() As String ' GHB and sex..
Dim NmeLen As Long, lngX As Long, strCompName As String
Let NmeLen = 999: Let strCompName = " " ' variables must be initialised or API things often dont work ' String$(50, 0)
Let lngX = GetComputerName(strCompName, NmeLen) '
If lngX <> 0 Then ' returns 1 if it works
Let ComputerName = strCompName ' Left$(strCompName, NmeLen) ' The first argument variable gets like a LSet done on it
Else
Let ComputerName = "Couldn't get Computer name"
End If
Let ComputerName = Left$(ComputerName, NmeLen) ' We must do this as there is a Chr(0) after the name .... Let ComputerName = Trim(ComputerName) ' this is no good, - it leaves Chr(0) on the end which means that ComputerName is the last thing that will get printed
'Call WtchaGot(ComputerName)
End Function
Code:
Option Explicit
Private Declare Function GetIpAddrTable_API Lib "IpHlpApi" Alias "GetIpAddrTable" (ByRef pIPAddrTable As Any, ByRef pdwSize As Long, ByVal bOrder As Long) As Long ' http://www.source-code.biz/snippets/vbasic/8.htm
' "GetIpAddrTable" (ByRef pIPAddrTable As Any, ByRef pdwSize As Long, ByVal bOrder As Long) As Long
Public Function GetIpAddrTable() As String ' Christian d'Heureuse, www.source-code.biz http://www.source-code.biz/snippets/vbasic/8.htm
Rem 1 We give the API function some info , and that seems to make it fill up an array with table values
Dim Buf(0 To 1234) As Byte ' Buf(0 To 511) As Byte ' must be Byte or overflow at NrOfEntries
Dim BufSize As Long: Let BufSize = 12345
Dim rc As Long: Let rc = GetIpAddrTable_API(Buf(0), BufSize, 1)
'If rc <> 0 Then Err.Raise vbObjectError, , "GetIpAddrTable failed with return value " & rc
Dim NrOfEntries As Integer: NrOfEntries = Buf(1) * 256 + Buf(0)
'If NrOfEntries = 0 Then GetIpAddrTable = Array(): Exit Function
Dim i As Long
For i = 0 To NrOfEntries - 1
Dim j As Long, s As String
For j = 0 To 3
Dim Indcy As Long: Let Indcy = 4 + i * 24 + j
s = s & IIf(j > 0, ".", "") & Buf(Indcy): Debug.Print Indcy & " " & Buf(Indcy) ' This code line just builds the final string for each IP address, with a "." before all but the first of the 4 number parts --- for example like 192 . 168 . 2 . 110
Next j
Dim strIPs As String: Let strIPs = strIPs & " " & s: Let s = ""
Next
GetIpAddrTable = strIPs: Debug.Print strIPs
End Function
' 4 127
' 5 0
' 6 0
' 7 1
' 28 192
' 29 168
' 30 2
' 31 110
' 127.0.0.1 192.168.2.110 ' _
' 4 10
' 5 132
' 6 13
' 7 113
' 28 127
' 29 0
' 30 0
' 31 1
' 52 192
' 53 168
' 54 2
' 55 110
' 10.132.13.113 127.0.0.1 192.168.2.110
' 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
' 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
' 49 50 51 52 53 54 55
' 10 132 13 127
' 127 0 0 1
' 192 168 2 110
Bookmarks