Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Сканирование доменов локальной сети

01.01.2007

Переменная List заполняется списком доменов. Функция возвращает код ошибки обращения к сети.

Function FillNetLevel(xxx: PNetResource; list: TStrings) : Word;
Type
   
PNRArr = ^TNRArr;
   
TNRArr = array[0..59] of TNetResource;
Var
   x
: PNRArr;
   tnr
: TNetResource;
   I
: integer;
   
EntrReq,
   
SizeReq,
   twx
: Integer;
   
WSName: string;
begin
     
Result := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY,
                                RESOURCEUSAGE_CONTAINER
, xxx, twx);
     
If Result = ERROR_NO_NETWORK Then Exit;
     
if Result = NO_ERROR then
     
begin
           
New(x);
           
EntrReq := 1;
           
SizeReq := SizeOf(TNetResource)*59;
           
while (twx <> 0) and
                 
(WNetEnumResource(twx, EntrReq, x, SizeReq) <> ERROR_NO_MORE_ITEMS) do
           
begin
                 
For i := 0 To EntrReq - 1 do
                 
begin
                   
Move(x^[i], tnr, SizeOf(tnr));
                   
case tnr.dwDisplayType of
                    RESOURCEDISPLAYTYPE_DOMAIN
:
                   
begin
                       
if tnr.lpRemoteName <> '' then
                           
WSName:= tnr.lpRemoteName
                           
else WSName:= tnr.lpComment;
                       list
.Add(WSName);
                   
end;
                   
else FillNetLevel(@tnr, list);
                   
end;
                 
end;
           
end;
           
Dispose(x);
           
WNetCloseEnum(twx);
     
end;
end;

Источник: https://dmitry9.nm.ru/info/