能力值:
( LV4,RANK:50 )
|
-
-
2 楼
我收藏的一段代码
void InsertChildItem(CListCtrl& m_list, int nItem, const char* szInsertText, const char* szText)
{
m_list.InsertItem(nItem, szInsertText);
m_list.SetItemText(nItem, 1, szText);
}
void Network(CListCtrl& m_list, CListCtrl& m_Childlist)
{
DWORD dwIndex;
DWORD dwNumber;
DWORD dwResult;
ULONG OutBufLen;
IP_ADAPTER_INFO AdapterInfo;
PIP_ADDR_STRING pAddrString;
PIP_ADAPTER_INFO pAdapterNext;
MIB_IFROW IfRow;
char buffer[256] = "";
int index = 0;
int ChildIndex = 0;
OutBufLen = sizeof(IP_ADAPTER_INFO);
dwResult = GetAdaptersInfo(&AdapterInfo,&OutBufLen);
if(dwResult == ERROR_BUFFER_OVERFLOW)
{
GetAdaptersInfo(&AdapterInfo,&OutBufLen);
}
else if (dwResult != ERROR_SUCCESS)
{
wsprintf(buffer, "GetAdaptersInfo Error: %d\n",GetLastError());
InsertChildItem(m_list, index++, "错误", buffer);
return;
}
pAdapterNext = &AdapterInfo;
while(pAdapterNext != NULL)
{
InsertChildItem(m_list, index++, "适配器名称", pAdapterNext->AdapterName);
InsertChildItem(m_list, index++, "描述", pAdapterNext->Description);
dwIndex = pAdapterNext->Index;
ZeroMemory(buffer, 256);
char temp[256] = "";
for(dwNumber = 0;dwNumber < pAdapterNext->AddressLength - 1; dwNumber++)
{
wsprintf(temp, "%.2X-", pAdapterNext->Address[dwNumber]);
strcat(buffer, temp);
}
wsprintf(temp, "%.2X", pAdapterNext->Address[dwNumber]);
strcat(buffer, temp);
InsertChildItem(m_list, index++, "绑定地址", buffer);
switch(pAdapterNext->Type)
{
case MIB_IF_TYPE_OTHER:
wsprintf(buffer, "%s", "其他");
break;
case MIB_IF_TYPE_ETHERNET:
wsprintf(buffer, "%s", "以太网络");
break;
case MIB_IF_TYPE_FDDI:
wsprintf(buffer, "%s", "FDDI");
break;
case MIB_IF_TYPE_PPP:
wsprintf(buffer, "%s", "PPP");
break;
case MIB_IF_TYPE_LOOPBACK:
wsprintf(buffer, "%s", "路由");
break;
case MIB_IF_TYPE_SLIP:
wsprintf(buffer, "%s", "串行线路接口协议");
break;
default:
wsprintf(buffer, "%s", "未知");
break;
}
InsertChildItem(m_list, index++, "类型", buffer);
printf("IpAddressList:\t %s\t\t%s\n","IP Address","Subnet Mask");
pAddrString = &pAdapterNext->IpAddressList;
ZeroMemory(buffer, 256);
ZeroMemory(temp, 256);
while(pAddrString != NULL)
{
wsprintf(temp, "%s / %s",pAddrString->IpAddress.String,pAddrString->IpMask.String);
strcat(buffer, temp);
pAddrString = pAddrString->Next;
}
InsertChildItem(m_list, index++, "IP地址/掩码", buffer);
pAddrString = &pAdapterNext->GatewayList;
printf("GatewayList:\t %s\n",pAddrString->IpAddress.String);
pAddrString = pAddrString->Next;
ZeroMemory(buffer, 256);
ZeroMemory(temp, 256);
while(pAddrString != NULL)
{
wsprintf(temp, "%s",pAddrString->IpAddress.String);
strcat(buffer, temp);
pAddrString = pAddrString->Next;
}
InsertChildItem(m_list, index++, "网关", buffer);
if(pAdapterNext->DhcpEnabled != 0)
{
ZeroMemory(buffer, 256);
ZeroMemory(temp, 256);
wsprintf(temp, "%s",pAdapterNext->DhcpServer.IpAddress.String);
strcat(buffer, temp);
strcat(buffer, "\t\t");
pAddrString = pAdapterNext->DhcpServer.Next;
while(pAddrString != NULL)
{
wsprintf(temp, "%s", pAddrString->IpAddress);
strcat(buffer, temp);
pAddrString = pAddrString->Next;
}
InsertChildItem(m_list, index++, "DHCP服务器", buffer);
}
if(pAdapterNext->HaveWins != 0)
{
wsprintf(temp, "%s", pAdapterNext->PrimaryWinsServer);
InsertChildItem(m_list, index++, "主要WinsSvr", buffer);
wsprintf(temp, "%s", pAdapterNext->SecondaryWinsServer);
InsertChildItem(m_list, index++, "次要WinsSvr", buffer);
}
InsertChildItem(m_list, index++, "租约获得", asctime(gmtime(&pAdapterNext->LeaseObtained)));
InsertChildItem(m_list, index++, "租约期满", asctime(gmtime(&pAdapterNext->LeaseExpires)));
IfRow.dwIndex = dwIndex;
if((dwResult = GetIfEntry(&IfRow)) != NO_ERROR)
{
printf("GetIfEntry Error: %d\n",dwResult);
break;
}
wsprintf(buffer, "%d",IfRow.dwMtu);
InsertChildItem(m_list, index++, "MTU", buffer);
wsprintf(buffer, "%d Kbps", IfRow.dwSpeed/1000);
InsertChildItem(m_list, index++, "网速", buffer);
switch(IfRow.dwOperStatus)
{
case MIB_IF_OPER_STATUS_NON_OPERATIONAL:
wsprintf(buffer, "%s", "LAN Adapter Disabled");
break;
case MIB_IF_OPER_STATUS_UNREACHABLE:
wsprintf(buffer, "%s", "WAN Adapter Disconnected");
break;
case MIB_IF_OPER_STATUS_DISCONNECTED:
wsprintf(buffer, "%s", "LAN Adapters Disconnected or WAN Adapters no Carrier");
break;
case MIB_IF_OPER_STATUS_CONNECTING:
wsprintf(buffer, "%s", "WAN Adapter Connecting");
break;
case MIB_IF_OPER_STATUS_CONNECTED:
wsprintf(buffer, "%s", "WAN Adapter Connected");
break;
case MIB_IF_OPER_STATUS_OPERATIONAL:
wsprintf(buffer, "%s", "LAN Adapter Default Status");
break;
default:
wsprintf(buffer, "%s", "未知");
break;
}
InsertChildItem(m_list, index++, "网络类型", buffer);
wsprintf(buffer, "%d", IfRow.dwInUnknownProtos);
InsertChildItem(m_list, index++, "未知记录", buffer);
wsprintf(buffer, "%5d%8d%8d%8d\n", IfRow.dwOutUcastPkts,IfRow.dwOutNUcastPkts,IfRow.dwOutErrors,IfRow.dwOutOctets);
InsertChildItem(m_Childlist, ChildIndex++, "发送", buffer);
wsprintf(buffer, "%5d%8d%8d%8d\n",IfRow.dwInUcastPkts,IfRow.dwInNUcastPkts,IfRow.dwInErrors,IfRow.dwInOctets);
InsertChildItem(m_Childlist, ChildIndex++, "接收", buffer);
wsprintf(buffer, "%5d%8d%8d%8d\n",
IfRow.dwInUcastPkts + IfRow.dwOutUcastPkts,
IfRow.dwInNUcastPkts + IfRow.dwOutNUcastPkts,
IfRow.dwInErrors + IfRow.dwOutErrors,
IfRow.dwInOctets + IfRow.dwOutOctets);
InsertChildItem(m_Childlist, ChildIndex++, "合计", buffer);
pAdapterNext = pAdapterNext->Next;
}
}
效果如下:
项目: 适配器名称
值: {FBE02A64-5415-4771-BC7C-975751C609AB}
项目: 描述
值: Realtek RTL8139 Family PCI Fast Ethernet NIC - 数据包计划程序微型端口
项目: 绑定地址
值: 00-E0-7C-E9-51-91
项目: 类型
值: 以太网络
项目: IP地址/掩码
值: 192.168.1.3 / 255.255.255.0
项目: DHCP服务器
值: 192.168.1.1
项目: 租约获得
值: Tue Mar 21 12:16:21 2006
项目: 租约期满
值: Wed Mar 22 12:16:21 2006
项目: MTU
值: 1500
项目: 网速
值: 100000 Kbps
项目: 网络类型
值: LAN Adapter Default Status
项目: 未知记录
值: 0
|