有没有方法实现网上邻居的功能,可以实现在线的计算机和计算机的名称

解决方案 »

  1.   

    www.codeproject.com/treectrl/pathpicker.asp
      

  2.   

    粗略如下:每台机子启动以后,广播他已经启动的消息,其他启动的机子通过他的数据包获得主机名和域名,同时标识其机。
    每台机子建立一个共享文件,记录本机的共享目录,其他网内主机发送请求后,由其权限发出共享目录名。
    然后...........用NetServerEnum 列出所有的server
    再用NetFileEnum枚举出所有的共享文件。void EnumServer()
    {LPSERVER_INFO_100  pServerEnum;
       DWORD   dwResult, dwRead, dwTotal;   dwResult = ::NetServerEnum( NULL, 100, 
                             (BYTE**) &pServerEnum,
                              -1, &dwRead, &dwTotal,
                             SV_TYPE_ALL, NULL, 0 );
                             
       if ( dwResult == NERR_Success ){
          for ( DWORD i=0; i<dwRead; i++ )
             m_wndListBox.AddString( CString( (LPCWSTR) pServerEnum[ i ].sv100_name ) );
       }
    }void PrintNetFiles(LPWSTR server)
    { resumeh = 0;
     do
     {
      buff = NULL;  rc=NetFileEnum(
       (char *) server,
       NULL,
       NULL,
       3,
          (BYTE**)&buff,
       2048,
       &read,
       &total,
       &resumeh );
      if ( rc != ERROR_MORE_DATA && rc != ERROR_SUCCESS )
       break;
      for ( i = 0, curf = buff; i < read; ++ i, ++ curf )
      {
       printf( "%-12S %-15S  \n",
        curf->fi3_username, curf->fi3_pathname
        );  }
      if ( buff != NULL )
      NetApiBufferFree( buff ); } while ( rc == ERROR_MORE_DATA );  if ( rc != ERROR_SUCCESS ) PrintError( rc );}
    netbios api共享文件需要用户名和密码
    DWORD WNetAddConnection2(
      LPNETRESOURCE lpNetResource,  // connection details
      LPCTSTR lpPassword,           // password
      LPCTSTR lpUsername,           // user name
      DWORD dwFlags                 // connection options
    );