//初始化网络库 WSADATA wsd; WSAStartup(MAKEWORD(2,2),&wsd); //设置表格风格 m_grid.SetExtendedStyle(LVS_EX_FLATSB |LVS_EX_FULLROWSELECT |LVS_EX_HEADERDRAGDROP |LVS_EX_ONECLICKACTIVATE |LVS_EX_GRIDLINES); //向表格中插入列 m_grid.InsertColumn(0,"计算机名",LVCFMT_LEFT,200,0); m_grid.InsertColumn(1,"IP地址",LVCFMT_LEFT,200,0); DWORD Count=0xFFFFFFFF,Bufsize=4096,Res;NETRESOURCE* nRes; NETRESOURCE* nRes1; NETRESOURCE* nRes2; HANDLE lphEnum; LPVOID Buf = new char[4096]; LPVOID Buf1 = new char[4096]; LPVOID Buf2 = new char[4096]; //打开列举的网络资源 Res = WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, RESOURCEUSAGE_CONTAINER,NULL,&lphEnum); //获取列举的网络资源信息 Res=WNetEnumResource(lphEnum,&Count,Buf,&Bufsize); nRes=(NETRESOURCE*)Buf; for(DWORD n=0;n<Count;n++,nRes++) { DWORD Count1=0xFFFFFFFF; Res = WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, RESOURCEUSAGE_CONTAINER,nRes,&lphEnum); Res=WNetEnumResource(lphEnum,&Count1,Buf1,&Bufsize); nRes1=(NETRESOURCE*)Buf1; for(DWORD i=0;i<Count1;i++,nRes1++) { DWORD Count2=0xFFFFFFFF; Res = WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, RESOURCEUSAGE_CONTAINER,nRes1,&lphEnum); Res=WNetEnumResource(lphEnum,&Count2,Buf2,&Bufsize); nRes2=(NETRESOURCE*)Buf2; for(DWORD j=0;j<Count2;j++,nRes2++) { m_grid.InsertItem(j,0); CString sName=nRes2->lpRemoteName; sName=sName.Right(sName.GetLength()-2); m_grid.SetItemText(j,0,sName); CString str=""; struct hostent * pHost; pHost = gethostbyname(sName); if(pHost==NULL) { m_grid.SetItemText(j,1,"无法获得IP地址"); } else { for(int n=0;n<4;n++) { CString addr; if(n > 0) { str += "."; } addr.Format("%u",(unsigned int)((unsigned char*)pHost->h_addr_list[0])[n]); str += addr; } m_grid.SetItemText(j,1,str); } } } } delete Buf; delete Buf1; delete Buf2; WNetCloseEnum(lphEnum);
|