枚举局域网计算机

    技术2022-05-11  82

    void CenumhostsDlg::OnBnClickedEnum(){ // TODO: 在此添加控件通知处理程序代码 GetDlgItem(IDC_ENUM)->EnableWindow(false);

     CStringArray list; EnumHosts(list); CListBox* pList=(CListBox*)GetDlgItem(IDC_LIST); pList->ResetContent(); pList->AddString("枚举结果如下"); for(int i=0;i<list.GetSize();i++)  pList->AddString(list.GetAt(i));

     GetDlgItem(IDC_ENUM)->EnableWindow(true);

    }

    void CenumhostsDlg::EnumHosts(CStringArray& list){ list.RemoveAll();

     CString strTemp; struct hostent *host; struct in_addr* ptr; DWORD dwScope=RESOURCE_CONTEXT; NETRESOURCE *NetResource=NULL; HANDLE hEnum; WNetOpenEnum(dwScope,NULL,NULL,NULL,&hEnum);

     WSADATA wsaData; WSAStartup(MAKEWORD(2,2),&wsaData); if(hEnum) {  DWORD Count=0xFFFFFFFF;  DWORD BufferSize=8192;  LPVOID Buffer=new char[8192];

      WNetEnumResource(hEnum,&Count,Buffer,&BufferSize);  NetResource=(NETRESOURCE*)Buffer;  char szHostName[200];  for(unsigned int i=0;i<BufferSize/sizeof(NETRESOURCE);i++,NetResource++)  {   if(NetResource->dwUsage==RESOURCEUSAGE_CONTAINER && NetResource->dwType==RESOURCETYPE_ANY)   {   // if(NetResource->lpRemoteName)   // {     CString strFullName=NetResource->lpRemoteName;     if(0==strFullName.Left(2).Compare(""))      strFullName=strFullName.Right(strFullName.GetLength()-2);     //gethostname(szHostName,strlen(szHostName));     //TRACE("%s/n",szHostName);     host=gethostbyname(strFullName);     if(host==NULL)continue;     ptr=(struct in_addr*)host->h_addr_list[0];

         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;     strTemp.Format("%s-->%d.%d.%d.%d",strFullName,a,b,c,d);     list.Add(strTemp);   // }   }  }  delete Buffer;  WNetCloseEnum(hEnum); } WSACleanup(); 


    最新回复(0)