源了;如果返回不是以上两个值,则表明列举过程出错.
WnetCloseEnum函数该函数用来关闭一个列举过程,函数原形如下:
DWORDWnetCIoseEnum(HANDLEhEnum):
)NETRESOURCE:
参数hEnum是由WnetOpenEnum返回的句柄.
在WNetOpenEnum函数中,将参数lpNetResource中的lpRemoteName部分指定为一个工作组的名称(如"微机三室"),可以获取一个句柄,在WNetEnumResource中利用这个句柄,可以获取一个NetResource类型的数组,每个NetRe-source元素的lpRemoteName部分即为一个计算机名称(如"\\jsj26").其代码如下:
Function
WNetOpenEnum函数用于获取一个网络资源句柄,可用
它的一些返回值进而列举出所有网络资源.函数原形如下:
DWORDWnetOpenEnum(DWORDdwScope,DWORDdwType,DWORDdwUsage,
LPNETRESOURCEIpNetResOurce,LPHANDLE
IphEnum):
参数说明:dwScope,dwType,dwUsage与网络资源数据结构中对应的域的取值范围相同,只是dwUsage多了一个可取值0,表明要列举任何用途的资源,并当dwScope参数的值不是
GetUsers(GroupName:string;varList:TListBox):
Boolean;type
万方数据
计算机时代2004年第7期
TNetResourceArray=^TNetResource;VarNetResource:TNetResource;Buf:Pointer;
·23·
//网络类型的数组
End:
并通过如下语句,调用上面的函数,将本工作组所有已连
接的计算机名称例举在一个listbox框中.代码如下:
procedurebeginifeditl.Text="then
TForml.ButtonlClick(Sender:TObjed):
Count,BufSize,Res:DWord;
Ind:Integer;IphEnum:THandle;Temp:TNetResourceArray;BeginResult:=False;List.Clear;
showmessage(.请输入工作组名')
elseifnot
GetUsers(ed.11.text,listboxl)thenitems.add('此工作组中无已连接的计算机')
listboxlend;
以下要对列举出的每台机器搜索出所有共享资源.2.2列举计算机中的共享资源在WNetOpenEnum函数中,将参数lpNetResource中的lpRemoteName指定为一个计算机名称(如"\\jsj26"),可以获取
FillChar(NetResource,SizeOf(NetResource),0)://初始化网络层次信息NetResource.IpRemoteName:=@GroupName[1];/,指定工作组名称
NetResource.dwDisplayType:=
一个句柄,在WNetEnumResource中利用这个句柄,获取一个
NetResource类型的数组,每个NetResource元素的lpRemom—Name即为计算机中的共享资源名称(可以是共享目录,文件名
RESOURCEDISPLAYTYPE_sERVER;
NetResource.dwUsage:=RESOURCEUSAGE—CONTAINERNetResource.dwScope:=RESOURCETYPE—DISK;
称和共享打印机名称等,如"\\jsj26\共享文件").代码如下:
Function
//列举文件资源信息//获取指定工作组的网络资源句柄Res:=WNetOpenEnum(RESOURCE—GLOBALNET,
RESOURCETYPE—DISK,
GetUserResource(UserName:string:varList: