使用IPHelp 函数 GetAdaptersInfo()函数,参数是一个IP_ADAPTER_INFO结构,和该结构的长度 VC下可以很方便的调用,有相关的api声明,delphi下调用需要装载iphlpapi.dll 这个dll在windows/system32目录下,从这个dll里装载此函数,构造下面结构体来调用.
下面是VC下的声明,转换为delphi结构即可.
typedef struct _IP_ADAPTER_INFO {
struct _IP_ADAPTER_INFO* Next;
DWORD ComboIndex;
char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
UINT AddressLength;
BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
DWORD Index;
UINT Type;
UINT DhcpEnabled;
PIP_ADDR_STRING CurrentIpAddress;
IP_ADDR_STRING IpAddressList;
IP_ADDR_STRING GatewayList;
IP_ADDR_STRING DhcpServer;
BOOL HaveWins;
IP_ADDR_STRING PrimaryWinsServer;
IP_ADDR_STRING SecondaryWinsServer;
time_t LeaseObtained;
time_t LeaseExpires;
} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
上面结构用到的结构
typedef struct _IP_ADDR_STRING {
struct _IP_ADDR_STRING* Next;
IP_ADDRESS_STRING IpAddress;
IP_MASK_STRING IpMask;
//实际是char String[4 * 4];
DWORD Context;
} IP_ADDR_STRING, *PIP_ADDR_STRING;
time_t 是 longint类型.
struct _IP_ADAPTER_INFO* Next;
这个结构就是指下个网卡.nil就没了.