04.10.2011, 18:20
|
Прохожий
|
|
Регистрация: 04.10.2011
Сообщения: 28
Репутация: 1351
|
|
Исходник - поиск файлов в локальной сети
Функция ищет все файлы на компьютерах локальной сети.
Код:
procedure NetworkScan(AFiles : TStrings);
procedure ScanDir(ADir:string);
var sr:_WIN32_FIND_DATA; fh:THandle; sn:string;
begin
fh:=FindFirstFile(PChar(ADir+'*'),sr);
if fh<>INVALID_HANDLE_VALUE then begin
repeat
sn := sr.cFileName;
if (sn<>'.')and(sn<>'..') then begin
if (sr.dwFileAttributes and faDirectory)<>0
then ScanDir(ADir+sn+'\')
else AFiles.Add(ADir+sn);
Application.ProcessMessages;
end;
until not FindNextFile(fh,sr);
end;
Windows.FindClose(fh);
end;
procedure EnumNet(NetRes:PNetResource);
var i,res,Handle,count,bufsize:cardinal;
pr:PNetResource;
buf:array of byte;
begin
bufsize:=16384;
SetLength(buf,bufsize);
count:=$FFFFFFFF;
res := WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_DISK,0,NetRes,Handle);
if res=NO_ERROR then begin
repeat
res:=WNetEnumResource(Handle,count,@buf[0],bufsize);
if res=NO_ERROR then begin
pr:=@buf[0];
for i:=0 to count-1 do begin
if (pr.dwUsage and RESOURCEUSAGE_CONTAINER)<>0
then EnumNet(pr);
if (pr.dwUsage and RESOURCEUSAGE_CONNECTABLE)<>0
then ScanDir(pr.lpRemoteName+'\');
inc(pr);
end;
end;
until (res<>NO_ERROR);
WNetCloseEnum(Handle);
end;
end;
begin
EnumNet(nil);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
NetworkScan(Memo1.Lines);
end;
|