; 1.0 2002/10/03 08:00:00 =================================================================} function getusers(groupname: string; var list: tstringlist): boolean; type tnetresourcearray = ^tnetresource;//网络类型的数组 var i: integer; buf: pointer; temp: tnetresourcearray; lphenum: thandle; netresource: tnetresource; count,bufsize,res: dword; begin result := false; list.clear; 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 i := 0 to count - 1 do//列举工作组的计算机名称 begin //获取工作组的计算机名称,+2表示删除"\\",如\\wangfajun=>wangfajun list.add(temp^.lpremotename + 2); inc(temp); end; end; res := wnetcloseenum(lphenum);//关闭一次列举 if res <> no_error then exit;//执行失败 result := true; freemem(buf); end;
{================================================================= 功 能: 列举所有网络类型 参 数: list: 需要填充的list 返回值: 成功: true,并填充list 失败: false; 备 注: 版 本: 1.0 2002/10/03 08:54:00 =================================================================} function getnetlist(var list: tstringlist): boolean; type tnetresourcearray = ^tnetresource;//网络类型的数组 var p: tnetresourcearray; buf: pointer; i: smallint; lphenum: thandle; netresource: tnetresource; count,bufsize,res: dword; begin result := false; list.clear; res := wnetopenenum( resource_globalnet, resourcetype_disk, resourceusage_container, nil,lphenum); if res <> no_error then exit;//执行失败 count := $ffffffff;//不限资源数目 bufsize := 8192;//缓冲区大小设置为8k getmem(buf, bufsize);//申请内存,用于获取工作组信息 res := wnetenumresource(lphenum, count, pointer(buf), bufsize);//获取网络类型信息 //资源列举完毕& |