列出网上邻居列表

type
  TNetResourceArray = ^TNetResource;  //网络资源类型的数组

Function GetUsers(GroupName:string): TStringList;
Var
    NetResource:TNetResource;
    Buf : Pointer;
    Count,BufSize,Res : DWord;
    Ind : Integer;
    lphEnum : THandle;
    Temp:TNetResourceArray;
Begin
    Result:= TStringList.Create;
    FillChar(NetResource, SizeOf(NetResource), 0);  //初始化网络层次信息
    NetResource.lpRemoteName := @GroupName[1];      //指定工作组名称
    NetResource.dwDisplayType := RESOURCEDISPLAYTYPE_SERVER;//类型为服务器(工作组)
    NetResource.dwUsage := RESOURCEUSAGE_CONTAINER;
    NetResource.dwScope := RESOURCETYPE_DISK;      //列举文件资源信息
    Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINER, @NetResource,lphEnum);
    If Res <> NO_ERROR Then Exit; //执行失败
    While True Do          //列举指定工作组的网络资源
    Begin
        Count := $FFFFFFFF; //不限资源数目
        BufSize := 8192;    //缓冲区大小设置为8K
        GetMem(Buf, BufSize);//申请内存,用于获取工作组信息,获取计算机名称
        Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);

        If Res = ERROR_NO_MORE_ITEMS Then break;//资源列举完毕
        If (Res <> NO_ERROR) then Exit;//执行失败

        Temp := TNetResourceArray(Buf);
        For Ind := 0 to Count - 1 do//列举工作组的计算机名称
        Begin
            Result.Add(Temp^.lpRemoteName);
            Inc(Temp);
        End;
        FreeMem(Buf);
    End;
    Res := WNetCloseEnum(lphEnum);//关闭一次列举
end;

示例:

列出 asteras 工作组内的所有计算机。

listbox1.Items:=getusers('asteras');