代碼: 選擇全部
// link iphlpapi.lib
#include <iphlpapi.h>
....
bool GetDNS(char *dns)
{
FIXED_INFO * FixedInfo;
ULONG ulOutBufLen;
DWORD dwRetVal;
//IP_ADDR_STRING * pIPAddr;
bool ret;
char dnstmp[4*4];
ret = false;
dns[0]=0;
FixedInfo = (FIXED_INFO *) GlobalAlloc( GPTR, sizeof( FIXED_INFO ) );
ulOutBufLen = sizeof( FIXED_INFO );
if( ERROR_BUFFER_OVERFLOW == GetNetworkParams( FixedInfo, &ulOutBufLen ) ) {
GlobalFree( FixedInfo );
FixedInfo = (FIXED_INFO *) GlobalAlloc( GPTR, ulOutBufLen );
}
if ( dwRetVal = GetNetworkParams( FixedInfo, &ulOutBufLen ) ) {
//printf( "Call to GetNetworkParams failed. Return value: %08xn", dwRetVal );
}
else {
sprintf( dnstmp, "%s", FixedInfo -> DnsServerList.IpAddress.String );
strcat(dns, dnstmp);
// if want to get more than one dns
/*
pIPAddr = FixedInfo -> DnsServerList.Next;
while ( pIPAddr ) {
sprintf( dnstmp, "%s", pIPAddr ->IpAddress.String );
pIPAddr = pIPAddr ->Next;
strcat(dns, dnstmp);
}
*/
ret = true;
}
GlobalFree( (HGLOBAL) FixedInfo );
return ret;
}
// usage
char dns[255];
if (GetDNS(dns))
MessageBox(dns);
iphlpapi.h 及 iphlpapi.lib 皆在 platform sdk 裡有, 或下載: http://www.lastbit.com/trafmeter/iphlpapi.zip