http://www.vckbase.com/bbs/prime/viewprime.asp?id=150

解决方案 »

  1.   

    http://nowcan.yeah.net里的共享搜索器。
      

  2.   

    给你一个例子
    如何得到与网上邻居一样的资源:定义:
    // testreeDlg.h : header filebool EnumerateNet(CTreeCtrl *tre,HTREEITEM hRoot,LPNETRESOURCE lpNR, DWORD dwScope= RESOURCE_GLOBALNET, DWORD dwType=RESOURCETYPE_ANY);
    CImageList cill1;//用于显示图片CTreeCtrl m_tre;//用于显示  与控件相对应//
    // testreeDlg.cpp : implementation file
    //调用:
    CTestreeApp *pApp=(CTestreeApp *)AfxGetApp();
    cill1.Create (16,16,ILC_COLOR,3,2);
    cill1.Add (pApp->LoadIcon(IDI_ICON_INT1D));
    cill1.Add (pApp->LoadIcon(IDI_ICON_INT2S));
    cill1.Add (pApp->LoadIcon(IDI_ICON_INT3S));
    m_tre.SetImageList (&cill1,TVSIL_NORMAL);
            HTREEITEM hRoot;
    BeginWaitCursor(); 
    EnumerateNet(&m_tre,hRoot,0);
    EndWaitCursor(); 

    //函数:
    bool CTestreeDlg::EnumerateNet(CTreeCtrl *tre,HTREEITEM hRoot, 
       LPNETRESOURCE lpNR,DWORD dwScope, DWORD dwType)
    {
    HANDLE hEnum=0;
    HTREEITEM hcur; 
        DWORD  dwRet = WNetOpenEnum(dwScope, dwType,0,lpNR,&hEnum);
        if(dwRet!=NO_ERROR)  return false; LPNETRESOURCE lpnrLocal;  //有待实验
    DWORD cbBuffer = 2048; 
    DWORD dwResult;
    DWORD cEntries = 0xFFFFFFFF;
    lpnrLocal = (LPNETRESOURCE)GlobalAlloc( GPTR, cbBuffer );
    while(1)
    {
       dwResult=WNetEnumResource(hEnum,&cEntries,lpnrLocal,&cbBuffer);
       if(dwResult==NO_ERROR)
       {
        //////////////////////
       CString strname;
      for(DWORD i=0; i <cEntries; i++ ) 
      {
      // 只搜索网络提供者为"Microsoft Network"的资源
      switch( lpnrLocal[i].dwDisplayType ) 
      {
      case RESOURCEDISPLAYTYPE_NETWORK: // 整个网络
        strname=lpnrLocal[i].lpRemoteName;
    strname+="整个网络(*)";
    hRoot=tre->InsertItem(strname,0,0);
    if(!EnumerateNet(tre,hRoot,&lpnrLocal[i])) return false;
    m_tre.Expand (hRoot,TVE_EXPAND);
    break;
      case RESOURCEDISPLAYTYPE_DOMAIN: // 工作组
    strname=lpnrLocal[i].lpRemoteName;
    strname+="--工作组";
    hcur=tre->InsertItem (strname,1,1,hRoot);
    if(!EnumerateNet(tre,hcur,&lpnrLocal[i])) return false;
    m_tre.Expand (hcur,TVE_EXPAND);
    break;
      case RESOURCEDISPLAYTYPE_SERVER: // 计算机
    strname=lpnrLocal[i].lpRemoteName;
    strname=strname.Right (strlen(strname)-2);
    tre->InsertItem (strname,2,2,hRoot);
        break;
      }
      }
        //////////////////////
       }
       else 
       {
       if(dwResult==ERROR_NO_MORE_ITEMS) break;
           else return false;
       }
    }
        WNetCloseEnum(hEnum);
    return true;
    }
    //结束