//TH-Header //***************************************************************************************** // Copyright (c) 2001 Michael Kurz // All rights reserved. // If you want to use this source in your applications contact: // // $FileName : D:\Entwicklung\SharedClasses\CIpAddressTable.pkg // $ProjectName : Shared Classes // $Author : Michael Kurz // $Created : 25.09.2001 12:51 // // Contents: // Gets a list of all available IP Addresses on a PC. //***************************************************************************************** // Usage: // Use CIpAddressTable.pkg // // Object oIpAddressTable Is a CIpAddressTable // Showln "IP Count: " (IPCount(Self)) // Showln "IP0: " (IPAddress(oIpAddressTable(Self),0)) " " (SubNetMask(oIpAddressTable(Self),0)) // Showln "IP1: " (IPAddress(oIpAddressTable(Self),1)) " " (SubNetMask(oIpAddressTable(Self),1)) // Showln "IP2: " (IPAddress(oIpAddressTable(Self),2)) " " (SubNetMask(oIpAddressTable(Self),2)) // End_Object // //TH-RevisionStart //TH-RevisionEnd External_Function GetIpAddrTable "GetIpAddrTable" Iphlpapi.Dll Pointer pTable Pointer pdwSize Integer bOrder Returns Integer TYPE MIB_IPADDRROW // Field MIB_IPADDRROW.dwAddr as DWORD // IP address (DWORD) Field MIB_IPADDRROW.dwAddr1 as Char 1 Field MIB_IPADDRROW.dwAddr2 as Char 1 Field MIB_IPADDRROW.dwAddr3 as Char 1 Field MIB_IPADDRROW.dwAddr4 as Char 1 Field MIB_IPADDRROW.dwIndex as DWORD // interface index (DWORD) // Field MIB_IPADDRROW.dwMask as DWORD // subnet mask (DWORD) Field MIB_IPADDRROW.dwMask1 as Char 1 Field MIB_IPADDRROW.dwMask2 as Char 1 Field MIB_IPADDRROW.dwMask3 as Char 1 Field MIB_IPADDRROW.dwMask4 as Char 1 Field MIB_IPADDRROW.dwBCastAddr as DWORD // broadcast address (DWORD) Field MIB_IPADDRROW.dwReasmSize as DWORD // rassembly size (DWORD) Field MIB_IPADDRROW.unused1 as WORD // not currently used (unsigned) Field MIB_IPADDRROW.unused2 as WORD // not currently used (unsigned) END_TYPE Class CIpAddressTable Is an Array // Properties... Procedure Construct_Object Forward Send Construct_Object Send DoGetIpAddrTable End_Procedure // Fills the Array with IP's. Procedure DoGetIpAddrTable Global Local Integer iRet iSize iCount iC Local_Buffer sDW pDW 4 (DWordToBytes(0)) Local String sMIB_IPADDRROW sTmp sIP sMsk Move (GetIpAddrTable(0,pDW,false)) To iRet Move (BytesToDword(sDW,1)) To iSize Local_Buffer sTable pTable iSize Move (DwordToBytes(iSIze)) To sDW GetAddress Of sDW To pDW Move (GetIpAddrTable(pTable,pDW,false)) To iRet If iRet Ne 0 Procedure_Return Move (BytesToDWord(sTable,1)) To iCount For iC From 0 To (iCount-1) Move (5+(iC*MIB_IPADDRROW_SIZE)) To iSize Move "" To sIP Move (Mid(sTable,MIB_IPADDRROW_SIZE,iSize)) To sMIB_IPADDRROW GetBuff_String From sMIB_IPADDRROW at MIB_IPADDRROW.dwAddr1 To sTmp Append sIP (Ascii(sTmp)) "." GetBuff_String From sMIB_IPADDRROW at MIB_IPADDRROW.dwAddr2 To sTmp Append sIP (Ascii(sTmp)) "." GetBuff_String From sMIB_IPADDRROW at MIB_IPADDRROW.dwAddr3 To sTmp Append sIP (Ascii(sTmp)) "." GetBuff_String From sMIB_IPADDRROW at MIB_IPADDRROW.dwAddr4 To sTmp Append sIP (Ascii(sTmp)) Move "" To sMsk GetBuff_String From sMIB_IPADDRROW at MIB_IPADDRROW.dwMask1 To sTmp Append sMsk (Ascii(sTmp)) "." GetBuff_String From sMIB_IPADDRROW at MIB_IPADDRROW.dwMask2 To sTmp Append sMsk (Ascii(sTmp)) "." GetBuff_String From sMIB_IPADDRROW at MIB_IPADDRROW.dwMask3 To sTmp Append sMsk (Ascii(sTmp)) "." GetBuff_String From sMIB_IPADDRROW at MIB_IPADDRROW.dwMask4 To sTmp Append sMsk (Ascii(sTmp)) Set value Item (Item_Count(Self)) To (sIP+"/"+sMsk) End End_Procedure Function IPAddress Integer iItem Returns String Function_Return (Left( Value(Self,iItem),Pos("/",Value(Self,iItem))-1)) End_Function Function SubNetMask Integer iItem Returns String Function_Return (Right( Value(Self,iItem),Length(Value(Self,iItem))-Pos("/",Value(Self,iItem)) )) End_Function Function IPCount Returns Integer Function_Return (Item_Count(Self)) End_Function End_Class