unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdMessageClient, IdSMTP, StdCtrls;type TNetResourceArray=^TNetResource; TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Memo1: TMemo; Label1: TLabel; procedure Button1Click(Sender: TObject); 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;end;end. 用来获取指定计算机
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdMessageClient, IdSMTP, StdCtrls;type
TNetResourceArray=^TNetResource;
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Memo1: TMemo;
Label1: TLabel;
procedure Button1Click(Sender: TObject); 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;end;end.
用来获取指定计算机
或可通过SHELLTREEVIEW来解决?