下面是一个使用WinForms显示iphlpapi.h
中返回值的示例代码:
#include <iphlpapi.h>
#include <string>
using namespace System;
using namespace System::Runtime::InteropServices;
String^ GetAdapterInfo()
{
// 获取本地适配器信息
ULONG bufferSize = 0;
DWORD result = GetAdaptersInfo(nullptr, &bufferSize);
if (result != ERROR_BUFFER_OVERFLOW) {
return "Failed to get adapter info";
}
BYTE* buffer = new BYTE[bufferSize];
result = GetAdaptersInfo((IP_ADAPTER_INFO*)buffer, &bufferSize);
if (result != ERROR_SUCCESS) {
delete[] buffer;
return "Failed to get adapter info";
}
// 解析适配器信息并将其转换为System::String
IP_ADAPTER_INFO* adapterInfo = (IP_ADAPTER_INFO*)buffer;
String^ adapterInfoStr = "";
while (adapterInfo) {
adapterInfoStr += "Adapter Name: " + gcnew String(adapterInfo->AdapterName) + "\n";
adapterInfoStr += "Description: " + gcnew String(adapterInfo->Description) + "\n";
adapterInfoStr += "IP Address: " + gcnew String(adapterInfo->IpAddressList.IpAddress.String) + "\n";
adapterInfoStr += "Subnet Mask: " + gcnew String(adapterInfo->IpAddressList.IpMask.String) + "\n";
adapterInfoStr += "Gateway: " + gcnew String(adapterInfo->GatewayList.IpAddress.String) + "\n\n";
adapterInfo = adapterInfo->Next;
}
delete[] buffer;
return adapterInfoStr;
}
int main(array<System::String ^> ^args)
{
String^ adapterInfo = GetAdapterInfo();
MessageBox::Show(adapterInfo);
return 0;
}
上述代码使用了GetAdaptersInfo
函数从系统获取本地适配器信息。然后,通过遍历适配器信息链表,将适配器名称、描述、IP地址、子网掩码和网关转换为System::String
,并将其存储在adapterInfoStr
变量中。
最后,使用MessageBox::Show
函数在WinForms应用程序中显示适配器信息。
注意:在使用此代码之前,需要通过Visual Studio或类似工具设置项目的引用和包含路径,以便包含iphlpapi.h
头文件并将iphlpapi.lib
库文件链接到项目中。