; ipaddr: 机器ip list: 需要填充的list 返回值: 成功: true,并填充list 失败: false; 备 注: wnetopenenum function starts an enumeration of network resources or existing connections. wnetenumresource function continues a network-resource enumeration started by the wnetopenenum function. 版 本: 1.0 2002/10/03 07:30:00 =================================================================} function getuserresource(ipaddr: 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; if copy(ipaddr,0,2) <> '\\' then ipaddr := '\\'+ipaddr; //填充ip地址信息 fillchar(netresource, sizeof(netresource), 0);//初始化网络层次信息 netresource.lpremotename := @ipaddr[1];//指定计算机名称 //获取指定计算机的网络资源句柄 res := wnetopenenum( resource_globalnet, resourcetype_any, resourceusage_connectable, @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表示删除"\\", //如\\192.168.0.1 => 192.168.0.1 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:00:00 =================================================================} function getgrouplist( var list : tstringlist ) : boolean; type tnetresourcearray = ^tnetresource;//网络类型的数组 var netresource: tnetresource; buf: pointer; count,bufsize,res: dword; lphenum: thandle; p: tnetresourcearray; i,j: smallint; networktypelist: tlist; begin result := false; networktypelist := tlis |