private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
Function GetUserResource( UserName : string ; var List : TStringList ) : Boolean;
Var
NetResource1 : TNetResource;
Buf1 : Pointer;
Count,BufSize,Res : DWord;
Ind1 : Integer;
lphEnum1 : THandle;
Temp1 : TNetResourceArray;
Begin
Result := False;
List.Clear;
FillChar(NetResource1, SizeOf(NetResource), 0);
NetResource1.lpRemoteName := @UserName[1];
Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_ANY,RESOURCEUSAGE_CONNECTABLE, @NetResource1,lphEnum1);
If Res <> NO_ERROR Then exit;
While True Do
Begin
Count := $FFFFFFFF;
BufSize := 8192;
GetMem(Buf1, BufSize);
Res := WNetEnumResource(lphEnum1, Count, Pointer(Buf1), BufSize);
If Res = ERROR_NO_MORE_ITEMS Then break;
If (Res <> NO_ERROR) then Exit;
Temp1 := TNetResourceArray(Buf1);
For Ind1 := 0 to Count - 1 do
Begin
List.Add(Temp1^.lpRemoteName);
Inc(Temp1);
End;
End;
Res := WNetCloseEnum(lphEnum1);
If Res <> NO_ERROR Then exit;
Result := True;
FreeMem(Buf1);
End;
procedure TForm1.Button1Click(Sender: TObject);
var
List1:TstringList;
i:integer;
begin
try
List1:=TstringList.Create;
if GetUserResource(edit1.text,List1) then
if List1.count=0 then
begin
showmessage(edit1.text+'不在局域网上或没有共享资源!');
end
else
memo1.Lines.Add (edit1.text+'下共享了如下资源');
for i:=0 to List1.Count-1 do
begin
Memo1.lines.Add (List1.strings[i]);
end;
finally
List1:=TstringList.Create;
end;