function Toperation.GetServerList(ServerList:TStrings):Boolean; var EnumH:Cardinal; Buf:Pointer; BufSize:Cardinal; Count:DWORD; temp:Pchar; begin try Result:=False; if WNetOpenEnum(RESOURCE_CONTEXT,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,nil,EnumH)=NO_ERROR then begin BufSize:=1024*16; GetMem(Buf,BufSize); Count:=DWORD(1); while WNetEnumResource(EnumH,Count,Buf,BufSize)=NO_ERROR do begin if NETRESOURCE(Buf^).dwDisplayType=RESOURCEDISPLAYTYPE_SERVER then begin Temp:=StrNew(PAnsiChar(@NETRESOURCE(Buf^).lpRemoteName[2])); ServerList.Add(Temp); StrDispose(Temp); end; end; FreeMem(Buf,BufSize); WNetCloseEnum(EnumH); Result:=True; end; except Result:=False; end; end;这是我一个程序中的源代码,不过我只是检测服务器,不检测工作站,你自己修改一下啦!
var
EnumH:Cardinal;
Buf:Pointer;
BufSize:Cardinal;
Count:DWORD;
temp:Pchar;
begin
try
Result:=False;
if WNetOpenEnum(RESOURCE_CONTEXT,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,nil,EnumH)=NO_ERROR then
begin
BufSize:=1024*16;
GetMem(Buf,BufSize);
Count:=DWORD(1);
while WNetEnumResource(EnumH,Count,Buf,BufSize)=NO_ERROR do
begin
if NETRESOURCE(Buf^).dwDisplayType=RESOURCEDISPLAYTYPE_SERVER then
begin
Temp:=StrNew(PAnsiChar(@NETRESOURCE(Buf^).lpRemoteName[2]));
ServerList.Add(Temp);
StrDispose(Temp);
end;
end;
FreeMem(Buf,BufSize);
WNetCloseEnum(EnumH);
Result:=True;
end;
except
Result:=False;
end;
end;这是我一个程序中的源代码,不过我只是检测服务器,不检测工作站,你自己修改一下啦!