t.create; list.clear; //获取整个网络中的文件资源的句柄,lphenum为返回名柄 res := wnetopenenum( resource_globalnet, resourcetype_disk, resourceusage_container, nil,lphenum); if res <> no_error then exit;//raise exception(res);//执行失败 //获取整个网络中的网络类型信息 count := $ffffffff;//不限资源数目 bufsize := 8192;//缓冲区大小设置为8k getmem(buf, bufsize);//申请内存,用于获取工作组信息 res := wnetenumresource(lphenum, count, pointer(buf), bufsize); //资源列举完毕 //执行失败 if ( res = error_no_more_items ) or (res <> no_error ) then exit; p := tnetresourcearray(buf); for i := 0 to count - 1 do//记录各个网络类型的信息 begin networktypelist.add(p); inc(p); end; res := wnetcloseenum(lphenum);//关闭一次列举 if res <> no_error then exit; for j := 0 to networktypelist.count-1 do //列出各个网络类型中的所有工作组名称 begin//列出一个网络类型中的所有工作组名称 netresource := tnetresource(networktypelist.items[j]^);//网络类型信息 //获取某个网络类型的文件资源的句柄,netresource为网络类型信息,lphenum为返回名柄 res := wnetopenenum(resource_globalnet, resourcetype_disk, resourceusage_container, @netresource,lphenum); if res <> no_error then break;//执行失败 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 ) or (res <> no_error) then break; p := tnetresourcearray(buf); for i := 0 to count - 1 do//列举各个工作组的信息 begin list.add( strpas( p^.lpremotename ));//取得一个工作组的名称 inc(p); end; end; res := wnetcloseenum(lphenum);//关闭一次列举 if res <> no_error then break;//执行失败 end; result := true; freemem(buf); networktypelist.destroy; end;
{================================================================= 功 能: 列举工作组中所有的计算机 参 数: list: 需要填充的list 返回值: 成功: true,并填充list 失败: false; 备 注: 版 本:   |