'with a little help from my friends' I mananged to remove all fixed sizes.
Code: Select all
;EnableExplicit
#GroupDemicals$ = ","
#GroupThousands$ = "."
#MIB_IF_TYPE_OTHER = 1
#MIB_IF_TYPE_ETHERNET = 6
#MIB_IF_TYPE_TOKENRING = 9
#MIB_IF_TYPE_FDDI = 15
#MIB_IF_TYPE_PPP = 23
#MIB_IF_TYPE_LOOPBACK = 24
#MIB_IF_TYPE_SLIP = 28
#MIB_IF_OPER_STATUS_NON_OPERATIONAL = 0
#MIB_IF_OPER_STATUS_UNREACHABLE = 1
#MIB_IF_OPER_STATUS_DISCONNECTED = 2
#MIB_IF_OPER_STATUS_CONNECTING = 3
#MIB_IF_OPER_STATUS_CONNECTED = 4
#MIB_IF_OPER_STATUS_OPERATIONAL = 5
#BROADCAST_NODETYPE = 1
#PEER_TO_PEER_NODETYPE = 2
#MIXED_NODETYPE = 4
#HYBRID_NODETYPE = 8
#MAX_HOSTNAME_LEN = 128
#MAX_DOMAIN_NAME_LEN = 128
#MAX_SCOPE_ID_LEN = 256
#MAX_ADAPTER_NAME = 128
#MAX_ADAPTER_DESCRIPTION_LENGTH = 128
#MAX_ADAPTER_NAME_LENGTH = 256
#MAX_ADAPTER_ADDRESS_LENGTH = 8
#MAX_INTERFACE_NAME_LEN = 256
#MAXLEN_PHYSADDR = 8
#MAXLEN_IFDESCR = 256
#ERROR_SUCCESS = 0
#ERROR_BUFFER_OVERFLOW = 111
#ERROR_INSUFFICIENT_BUFFER = 122
Structure IP_ADDRESS_STRING
String.a[16]
EndStructure
Structure IP_MASK_STRING
String.a[16]
EndStructure
Structure IP_ADDR_STRING
NextAdapter.i
IpAddress.IP_ADDRESS_STRING
IpMask.IP_ADDRESS_STRING
Context.i
EndStructure
Structure FIXED_INFO
HostName.a[#MAX_HOSTNAME_LEN + 4]
DomainName.a[#MAX_DOMAIN_NAME_LEN + 4]
CurrentDnsServer.i
DnsServerList.IP_ADDR_STRING
NodeType.l
ScopeId.a[#MAX_SCOPE_ID_LEN + 4]
EnableRouting.l
EnableProxy.l
EnableDns.l
EndStructure
Structure IP_ADAPTER_INFO
*NextAdapter
ComboIndex.l
AdapterName.a[#MAX_ADAPTER_NAME_LENGTH + 4]
Description.a[#MAX_ADAPTER_DESCRIPTION_LENGTH + 4]
AddressLength.l
Address.a[#MAX_ADAPTER_ADDRESS_LENGTH]
index.l
Type.l
DhcpEnabled.i
*CurrentIpAddress.IP_ADDR_STRING
IpAddressList.IP_ADDR_STRING
GatewayList.IP_ADDR_STRING
DhcpServer.IP_ADDR_STRING
HaveWINS.l
PrimaryWinsServer.IP_ADDR_STRING
SecondaryWinsServer.IP_ADDR_STRING
LeaseObtained.l
LeaseExpires.l
EndStructure
Structure MIB_IFROW
wszName.a[#MAX_INTERFACE_NAME_LEN * 2] ; * 2 cause stored as unicode
dwIndex.l
dwType.l
dwMtu.l
dwSpeed.l
dwPhysAddrLen.l
bPhysAddr.a[#MAXLEN_PHYSADDR]
dwAdminStatus.l
dwOperStatus.l
dwLastChange.l
dwInOctets.l
dwInUcastPkts.l
dwInNUcastPkts.l
dwInDiscards.l
dwInErrors.l
dwInUnknownProtos.l
dwOutOctets.l
dwOutUcastPkts.l
dwOutNUcastPkts.l
dwOutDiscards.l
dwOutErrors.l
dwOutQLen.l
dwDescrLen.l
bDescr.a[#MAXLEN_IFDESCR]
EndStructure
Structure MIB_IFTABLE
dwNumEntries.l
table.MIB_IFROW[0]
EndStructure
Structure AdapterStructure
AdapterName.s
Type.s
Speed.s
sMTU.s
packsS.s
bytesS.s
packsR.s
bytesR.s
status.s
IPAddr.s
SubMask.s
Addr.s
Indx.s
DHCPE.s
DHCPIPAddr.s
DHCPIPMask.s
DHCPLObt.s
DHCPLExp.s
GateIPAddress.s
GateIPMask.s
HaveWINS.s
PWINSIPAddress.s
PWINSIPMask.s
SWINSIPAddress.s
SWINSIPMask.s
EndStructure
Structure NetWorkInfoStructure
index.l
HostName.s
DomainName.s
nod.s
ScopeID.s
DNSE.s
ProxyE.s
RoutE.s
Conx.s
List DNSIPAddList.s()
List AdapterList.AdapterStructure()
EndStructure
Procedure.d int32_uint32(lValue.l)
Protected int32uint32.l
If lValue < 0
int32uint32 = lValue + $100000000
Else
int32uint32 = lValue
EndIf
ProcedureReturn int32uint32
EndProcedure
Procedure.s c2str(num.d, demical.l=0)
ProcedureReturn ReplaceString(StrD(num,demical), ".", #GroupDemicals$)
EndProcedure
Procedure.s FormatByteSize(n.q)
Protected.i length, i
Protected s$, ret$
s$ = Str(n)
length = Len(s$) - 1
For i = 0 To length
If i And Not i % 3 : ret$ = #GroupThousands$ + ret$ : EndIf
ret$ = Mid(s$, length - i, 1) + ret$
Next
ProcedureReturn ret$
EndProcedure
Procedure.s SpaceDivider(space.q)
Protected.d mt
Protected tm$
mt = space
If mt > 1000 : mt / 1024 : tm$ = " KB" : EndIf
If mt > 1000 : mt / 1024 : tm$ = " MB" : EndIf
If mt > 1000 : mt / 1024 : tm$ = " GB" : EndIf
If mt > 1000 : mt / 1024 : tm$ = " TB" : EndIf
ProcedureReturn ReplaceString(StrD(mt, 3), ".", #GroupDemicals$) + tm$
EndProcedure
Procedure LAN(*LANInfo.NetWorkInfoStructure)
Protected.i AdapterCount, MIBCount
Protected *MIBIfTable.MIB_IFTABLE
Dim IPAdapterInfo.IP_ADAPTER_INFO(0)
NewList NICs.s()
hMod.i = LoadLibrary_("iphlpapi.dll")
FuncName.s = Space(60)
PokeS(@FuncName,"GetAdaptersInfo",-1,#PB_Ascii)
If GetProcAddress_(hMod, FuncName) <> 0
lBufferLength.l = 0
lErrors = GetAdaptersInfo_(@IPAdapterInfo(0), @lBufferLength)
If lErrors = #ERROR_BUFFER_OVERFLOW
AdapterCount = lBufferLength / SizeOf(IP_ADAPTER_INFO)
ReDim IPAdapterInfo(AdapterCount)
EndIf
lBufferLength = AdapterCount * SizeOf(IP_ADAPTER_INFO)
lErrors = GetAdaptersInfo_(@IPAdapterInfo(0), @lBufferLength)
If lErrors <> #ERROR_SUCCESS: ProcedureReturn: EndIf
lBufferPos.l
; For i=0 To AdapterCount - 1
; Debug PeekS(@IPAdapterInfo(i)\AdapterName, #MAX_ADAPTER_NAME_LENGTH + 4, #PB_Ascii)
; Debug PeekS(@IPAdapterInfo(i)\Description, #MAX_ADAPTER_DESCRIPTION_LENGTH + 4, #PB_Ascii)
; Next
Else
MessageRequester("error","Could not load 'iphlpapi.dll'.")
ProcedureReturn
EndIf
AdapterCount.i
tmp.s
tmp2.d
FuncName = Space(60)
PokeS(@FuncName,"GetIfTable",-1,#PB_Ascii)
If GetProcAddress_(hMod, FuncName) <> 0 ;for speed and status
lSize = 0
lErrors = GetIfTable_(*MIBIfTable, @lSize, 0)
If lErrors = #ERROR_INSUFFICIENT_BUFFER
;Debug lSize - SizeOf(LONG)
*MIBIfTable = AllocateMemory(lSize)
EndIf
lErrors = GetIfTable_(*MIBIfTable, @lSize, 0)
If lErrors <> #ERROR_SUCCESS: ProcedureReturn: EndIf
; Debug *MIBIfTable\dwNumEntries
;
; For i = 0 To *MIBIfTable\dwNumEntries - 1
; Debug PeekS(@*MIBIfTable\table[i]\bDescr[0], *MIBIfTable\table[i]\dwDescrLen, #PB_Ascii)
; Debug PeekS(@*MIBIfTable\table[i]\wszName[0], #MAX_INTERFACE_NAME_LEN, #PB_Unicode)
; Debug *MIBIfTable\table[i]\dwOutOctets
; Next i
EndIf
FuncName = Space(60)
PokeS(@FuncName,"GetNetworkParams",-1,#PB_Ascii)
If GetProcAddress_(hMod, FuncName) <> 0
xx = 0
FixedInfo.FIXED_INFO
lBufferLength = SizeOf(FIXED_INFO)
lErrors = GetNetworkParams_(@FixedInfo, @lBufferLength)
With FixedInfo
IPAddrString.IP_ADDR_STRING
*LANInfo\HostName = PeekS(@\Hostname,-1,#PB_Ascii)
*LANInfo\DomainName = PeekS(@\DomainName,-1,#PB_Ascii)
If \EnableDns = 1: *LANInfo\DNSE = "Yes": Else: *LANInfo\DNSE = "No": EndIf
AddElement(*LANInfo\DNSIPAddList())
*LANInfo\DNSIPAddList() = PeekS(@\DnsServerList\IpAddress,-1,#PB_Ascii)
lNext.l = \DnsServerList\NextAdapter
While aa.l=0
If lNext <> 0
If IsBadReadPtr_(lNext, SizeOf(IP_ADDR_STRING)) = #False
MoveMemory(@lNext, @IPAddrString, SizeOf(IP_ADDR_STRING))
EndIf
If lNext <> IPAddrString\NextAdapter
lNext = IPAddrString\NextAdapter
xx = xx + 1
;*LANInfo\DNSIPAdd[xx] = PeekS(@IPAddrString\IpAddress\String,-1,#PB_Ascii)
AddElement(*LANInfo\DNSIPAddList())
*LANInfo\DNSIPAddList() = PeekS(@IPAddrString\IpAddress\String,-1,#PB_Ascii)
Else
aa=1
EndIf
Else
aa=1
EndIf
Wend
Select \NodeType
Case #BROADCAST_NODETYPE: *LANInfo\nod = "Broadcast"
Case #PEER_TO_PEER_NODETYPE: *LANInfo\nod = "Peer To Peer"
Case #MIXED_NODETYPE: *LANInfo\nod = "Mixed"
Case #HYBRID_NODETYPE: *LANInfo\nod = "Hybrid"
Default: *LANInfo\nod = "Unknown " + Str(\NodeType)
EndSelect
*LANInfo\ScopeID = ReplaceString(PeekS(@\ScopeId[0],-1,#PB_Ascii), Chr(0), "")
If \EnableProxy = 1: *LANInfo\ProxyE = "Yes": Else: *LANInfo\ProxyE = "No": EndIf
If \EnableRouting = 1: *LANInfo\RoutE = "Yes": Else: *LANInfo\RoutE = "No": EndIf
EndWith
Else
MessageRequester("error","GetNetworkParams not found")
EndIf
For i = 0 To AdapterCount
With IPAdapterInfo(i)
For ii = 0 To *MIBIfTable\dwNumEntries - 1
If PeekS(@*MIBIfTable\table[ii]\bDescr[0], *MIBIfTable\table[ii]\dwDescrLen, #PB_Ascii) = PeekS(@IPAdapterInfo(i)\Description, #MAX_ADAPTER_DESCRIPTION_LENGTH + 4,#PB_Ascii)
;Debug "Found " + PeekS(@IPAdapterInfo(i)\Description, #MAX_ADAPTER_DESCRIPTION_LENGTH + 4,#PB_Ascii)
AddElement(*LANInfo\AdapterList())
*LANInfo\AdapterList()\AdapterName = PeekS(@IPAdapterInfo(i)\Description, #MAX_ADAPTER_DESCRIPTION_LENGTH + 4,#PB_Ascii)
Select \Type
Case #MIB_IF_TYPE_OTHER: *LANInfo\AdapterList()\Type = "Other"
Case #MIB_IF_TYPE_ETHERNET: *LANInfo\AdapterList()\Type = "Ethernet"
Case #MIB_IF_TYPE_TOKENRING: *LANInfo\AdapterList()\Type = "Tokenring"
Case #MIB_IF_TYPE_FDDI: *LANInfo\AdapterList()\Type = "FDDI"
Case #MIB_IF_TYPE_PPP: *LANInfo\AdapterList()\Type = "PPP"
Case #MIB_IF_TYPE_LOOPBACK: *LANInfo\AdapterList()\Type = "Loopback"
Case #MIB_IF_TYPE_SLIP: *LANInfo\AdapterList()\Type = "Slip"
Default: *LANInfo\AdapterList()\Type = "Unknown " + Str(\Type)
EndSelect
tmp2 = int32_uint32(*MIBIfTable\table[ii]\dwSpeed): tmp = " bit"
If tmp2 >= 1000: tmp2 = tmp2 / 1000: tmp = " Kbit":EndIf
If tmp2 >= 1000: tmp2 = tmp2 / 1000: tmp = " Mbit": EndIf
If tmp2 >= 1000: tmp2 = tmp2 / 1000: tmp = " Gbit": EndIf
*LANInfo\AdapterList()\Speed = c2str(tmp2,2) + tmp
*LANInfo\AdapterList()\sMTU = Str(*MIBIfTable\table[ii]\dwMtu) + " bytes"
*LANInfo\AdapterList()\packsS = FormatByteSize(*MIBIfTable\table[ii]\dwOutNUcastPkts + *MIBIfTable\table[ii]\dwOutUcastPkts)
tmp = FormatByteSize(*MIBIfTable\table[ii]\dwOutOctets)
If tmp = "": tmp = "0": EndIf
If *MIBIfTable\table[ii]\dwOutOctets > 1024
tmp + " ( " + SpaceDivider(*MIBIfTable\table[ii]\dwOutOctets) + " )"
If Right(tmp,6) = #GroupDemicals$ + "000 )":tmp=Left(tmp,Len(tmp)-6) + " )": EndIf
EndIf
*LANInfo\AdapterList()\bytesS = tmp
*LANInfo\AdapterList()\packsR = FormatByteSize(*MIBIfTable\table[ii]\dwInNUcastPkts + *MIBIfTable\table[ii]\dwInUcastPkts)
tmp = FormatByteSize(*MIBIfTable\table[ii]\dwInOctets)
If tmp = "": tmp = "0": EndIf
If (*MIBIfTable\table[ii]\dwInOctets & $FFFFFFFF) > 1024
tmp + " ( " + SpaceDivider(*MIBIfTable\table[ii]\dwInOctets) + " )"
If Right(tmp,6) = #GroupDemicals$ + "000 )":tmp=Left(tmp,Len(tmp)-6) + " )": EndIf
EndIf
*LANInfo\AdapterList()\bytesR = tmp
Select *MIBIfTable\table[ii]\dwOperStatus
Case #MIB_IF_OPER_STATUS_NON_OPERATIONAL: *LANInfo\AdapterList()\status = "Non operational"
Case #MIB_IF_OPER_STATUS_UNREACHABLE: *LANInfo\AdapterList()\status = "Unreachable"
Case #MIB_IF_OPER_STATUS_DISCONNECTED: *LANInfo\AdapterList()\status = "Disconnected"
Case #MIB_IF_OPER_STATUS_CONNECTING: *LANInfo\AdapterList()\status = "Connecting"
Case #MIB_IF_OPER_STATUS_CONNECTED: *LANInfo\AdapterList()\status = "Connected"
Case #MIB_IF_OPER_STATUS_OPERATIONAL: *LANInfo\AdapterList()\status = "Operational"
Default: *LANInfo\AdapterList()\status = "Unknown " + c2str(int32_uint32(*MIBIfTable\table[ii]\dwOperStatus),0)
EndSelect
Break
EndIf
Next
*LANInfo\AdapterList()\IPAddr = PeekS(@\IpAddressList\IpAddress,-1,#PB_Ascii)
*LANInfo\AdapterList()\SubMask = PeekS(@\IpAddressList\IpMask,-1,#PB_Ascii)
tmp = ""
If Len(PeekS(@\AdapterName,-1,#PB_Ascii)) >= \AddressLength
For lIncrement.l = 0 To \AddressLength-1
tmp = tmp + RSet(Hex(\Address[lIncrement] & $FF),2,"0")
Next lIncrement
tmp = RSet(tmp,12,"0")
tmp = Left(tmp, 2) + ":" + Mid(tmp, 3, 2) + ":" + Mid(tmp, 5, 2) + ":" + Mid(tmp, 7, 2) + ":" + Mid(tmp, 9, 2) + ":" + Mid(tmp, 11, 2)
*LANInfo\AdapterList()\Addr = tmp
EndIf
*LANInfo\AdapterList()\Indx = (c2str(int32_uint32(\Index),0))
If \DhcpEnabled = 1: *LANInfo\AdapterList()\DHCPE = "Yes": Else: *LANInfo\AdapterList()\DHCPE = "No": EndIf
*LANInfo\AdapterList()\DHCPIPAddr = PeekS(@\DhcpServer\IpAddress,-1,#PB_Ascii)
*LANInfo\AdapterList()\DHCPIPMask = PeekS(@\DhcpServer\IpMask,-1,#PB_Ascii)
If \LeaseObtained > 10000
tmp = FormatDate("%dd/%mm/%yyyy , %hh:%ii:%ss",AddDate( 1/1/1970,#PB_Date_Second, \LeaseObtained))
*LANInfo\AdapterList()\DHCPLObt = FormatDate("%dd/%mm/%yyyy , %hh:%ii:%ss",AddDate( ParseDate("%dd/%mm/%yyyy , %hh:%ii:%ss",tmp),#PB_Date_Minute,-TZResult ))
Else
*LANInfo\AdapterList()\DHCPLObt = "NotAvailable"
EndIf
If \LeaseExpires > 10000
tmp = FormatDate("%dd/%mm/%yyyy , %hh:%ii:%ss",AddDate( 1/1/1970,#PB_Date_Second, \LeaseExpires))
*LANInfo\AdapterList()\DHCPLExp = FormatDate("%dd/%mm/%yyyy , %hh:%ii:%ss",AddDate( ParseDate("%dd/%mm/%yyyy , %hh:%ii:%ss",tmp),#PB_Date_Minute,-TZResult))
Else
*LANInfo\AdapterList()\DHCPLExp = "NotAvailable"
EndIf
CopyMemory(@\IpAddressList,@IPAddrString,SizeOf(IP_ADDR_STRING))
For ii=0 To 100
If IPAddrString\NextAdapter <> 0
If IsBadReadPtr_(@IPAddrString\NextAdapter, SizeOf(IP_ADDR_STRING)) = #False
MoveMemory(@IPAddrString\NextAdapter, @IPAddrString, SizeOf(IP_ADDR_STRING))
EndIf
Else
Break
EndIf
If bShutdown = #True: Break: EndIf
Next
*LANInfo\AdapterList()\GateIPAddress = PeekS(@\GatewayList\IpAddress,-1,#PB_Ascii)
*LANInfo\AdapterList()\GateIPMask = PeekS(@\GatewayList\IpMask,-1,#PB_Ascii)
If \HaveWINS = 1: *LANInfo\AdapterList()\HaveWINS = "Yes": Else: *LANInfo\AdapterList()\HaveWINS = "No": EndIf
*LANInfo\AdapterList()\PWINSIPAddress = PeekS(@\PrimaryWinsServer\IpAddress,-1,#PB_Ascii)
*LANInfo\AdapterList()\PWINSIPMask = PeekS(@\PrimaryWinsServer\IpMask,-1,#PB_Ascii)
*LANInfo\AdapterList()\SWINSIPAddress = PeekS(@\SecondaryWinsServer\IpAddress,-1,#PB_Ascii)
*LANInfo\AdapterList()\SWINSIPMask = PeekS(@\SecondaryWinsServer\IpMask,-1,#PB_Ascii)
EndWith
Next
If *MIBIfTable
FreeMemory(*MIBIfTable)
EndIf
EndProcedure
;-Main
Define.i i
Define LANInfo.NetWorkInfoStructure
If OpenWindow(0, 0, 0, 432, 510, "Network Info", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(0,5,5,422,500,"Element",200,#PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
AddGadgetColumn(0,1,"Data",200)
EndIf
LAN(@LANInfo)
AddGadgetItem(0,-1,"Host name"+#LF$+LANInfo\HostName)
AddGadgetItem(0,-1,"Domain name"+#LF$+LANInfo\DomainName)
AddGadgetItem(0,-1,"DNS enabled"+#LF$+LANInfo\DNSE)
ForEach LANInfo\DNSIPAddList()
AddGadgetItem(0,-1,"DNS Server IP address #" + Str(i+1)+#LF$+LANInfo\DNSIPAddList())
Next
AddGadgetItem(0,-1,"Node type"+#LF$+LANInfo\nod)
AddGadgetItem(0,-1,"Scope ID"+#LF$+LANInfo\ScopeID)
AddGadgetItem(0,-1,"WINS Proxy Enabled"+#LF$+LANInfo\ProxyE)
AddGadgetItem(0,-1,"IP Routing Enabled"+#LF$+LANInfo\RoutE)
AddGadgetItem(0,-1,""+#LF$+"")
i = 0
ForEach LANInfo\AdapterList()
AddGadgetItem(0,-1,"Connection #"+Str(i+1)+#LF$+"")
SetGadgetItemColor(0,CountGadgetItems(0)-1,#PB_Gadget_FrontColor,$906000,0)
AddGadgetItem(0,-1,"Adapter name"+#LF$+LANInfo\AdapterList()\AdapterName)
AddGadgetItem(0,-1,"Type"+#LF$+LANInfo\AdapterList()\Type)
AddGadgetItem(0,-1,"Speed"+#LF$+LANInfo\AdapterList()\Speed)
AddGadgetItem(0,-1,"Maximum Transfer Unit Size (MTU)"+#LF$+LANInfo\AdapterList()\sMTU)
AddGadgetItem(0,-1,"Packets sent"+#LF$+LANInfo\AdapterList()\packsS)
AddGadgetItem(0,-1,"Bytes sent"+#LF$+LANInfo\AdapterList()\bytesS)
AddGadgetItem(0,-1,"Packets received"+#LF$+LANInfo\AdapterList()\packsR)
AddGadgetItem(0,-1,"Bytes received"+#LF$+LANInfo\AdapterList()\bytesR)
AddGadgetItem(0,-1,"Status"+#LF$+LANInfo\AdapterList()\status)
AddGadgetItem(0,-1,"IP"+#LF$+LANInfo\AdapterList()\IPAddr)
AddGadgetItem(0,-1,"SubMask"+#LF$+LANInfo\AdapterList()\SubMask)
AddGadgetItem(0,-1,"Address"+#LF$+LANInfo\AdapterList()\Addr)
AddGadgetItem(0,-1,"Index"+#LF$+LANInfo\AdapterList()\Indx)
AddGadgetItem(0,-1,"DHCP enabled"+#LF$+LANInfo\AdapterList()\DHCPE)
AddGadgetItem(0,-1,"DCHP IP address"+#LF$+LANInfo\AdapterList()\DHCPIPAddr)
AddGadgetItem(0,-1,"DCHP IP mask"+#LF$+LANInfo\AdapterList()\DHCPIPMask)
AddGadgetItem(0,-1,"DHCP lease obtained"+#LF$+LANInfo\AdapterList()\DHCPLObt)
AddGadgetItem(0,-1,"DHCP lease expires"+#LF$+LANInfo\AdapterList()\DHCPLExp)
AddGadgetItem(0,-1,"Gateway IP address"+#LF$+LANInfo\AdapterList()\GateIPAddress)
AddGadgetItem(0,-1,"Gateway IP mask"+#LF$+LANInfo\AdapterList()\GateIPMask)
AddGadgetItem(0,-1,"Have WINS"+#LF$+LANInfo\AdapterList()\HaveWINS)
If LANInfo\AdapterList()\HaveWINS = "Yes"
AddGadgetItem(0,-1,"Primary WINS Server IP address"+#LF$+LANInfo\AdapterList()\PWINSIPAddress)
AddGadgetItem(0,-1,"Primary WINS Server IP mask"+#LF$+LANInfo\AdapterList()\PWINSIPMask)
AddGadgetItem(0,-1,"Secondary WINS Server IP address"+#LF$+LANInfo\AdapterList()\SWINSIPAddress)
AddGadgetItem(0,-1,"Secondary WINS Server IP Mask"+#LF$+LANInfo\AdapterList()\SWINSIPMask)
EndIf
i + 1
Next
;-MainLoop
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow