CString GetIp()
{
CString lstrv_IP = _T("");
CString strSubResource = _T("");
struct in_addr *ptr;
struct hostent *host;
DWORD dwScope = RESOURCE_CONTEXT;
NETRESOURCE *NetResource = NULL;
HANDLE hEnum;
WSADATA wsaData;
WSAStartup( MAKEWORD( 1,1 ),&wsaData );
WNetOpenEnum( dwScope,NULL,NULL,NULL,&hEnum );
if( hEnum )
{
DWORD Count = 0xFFFFFFFF;
DWORD BufferSize = 2048;
LPVOID Buffer = new char[ 2048 ];
WNetEnumResource( hEnum,&Count,Buffer,&BufferSize );
NetResource = ( NETRESOURCE * )Buffer;
for( unsigned int i = 0; i < Count; i++, NetResource++ )
{
if( NetResource->lpRemoteName )
{
strSubResource.Empty();
}
CString strFullName = NetResource->lpRemoteName;
if( 0 == strFullName.Left(2).Compare( "\\\\" ) )
strFullName = strFullName.Right( strFullName.GetLength() - 2 );
host = gethostbyname(strFullName);
if( NULL != host)
{
ptr = ( struct in_addr * )host->h_addr_list[ 0 ];
// Get IP
int a = ptr->S_un.S_un_b.s_b1;
int b = ptr->S_un.S_un_b.s_b2;
int c = ptr->S_un.S_un_b.s_b3;
int d = ptr->S_un.S_un_b.s_b4;
lstrv_IP.Format( _T("%d.%d.%d.%d"),a,b,c,d );
}
delete Buffer;
}
}
WNetCloseEnum( hEnum );
WSACleanup();
return lstrv_IP;
}