На главную
Подписка
Новости


Рейтинг@Mail.ru











Главная / DELPHI / Часто задаваемые вопросы и ответы на них / Работа с сетью / Как найти все компьютеры в рабочей группе? Сделать домашней страницей Добавить в избранное Написать писмо

Как найти все компьютеры в рабочей группе?



var
 Computer      : Array[1..500] of String[25];
 ComputerCount : Integer;

procedure FindAllComputers(Workgroup: String);
Var
 EnumHandle  : THandle;
 WorkgroupRS : TNetResource;
 Buf         : Array[1..500] of TNetResource;
 BufSize     : Integer;
 Entries     : Integer;
 Result      : Integer;

begin
 ComputerCount := 0;
 Workgroup := Workgroup + #0;
 FillChar(WorkgroupRS, SizeOf(WorkgroupRS) , 0);
 With WorkgroupRS do begin
   dwScope := 2;
   dwType := 3;
   dwDisplayType := 1;
   dwUsage := 2;
   lpRemoteName := @Workgroup[1];
 end;

 WNetOpenEnum( RESOURCE_GLOBALNET,
               RESOURCETYPE_ANY,
               0,
               @WorkgroupRS,
               EnumHandle );

 Repeat
   Entries := 1;
   BufSize := SizeOf(Buf);

   Result :=
    WNetEnumResource( EnumHandle,
                      Entries,
                      @Buf,
                      BufSize );
  If (Result = NO_ERROR) and (Entries = 1) then begin
     Inc( ComputerCount );
     Computer[ ComputerCount ] := StrPas(Buf[1].lpRemoteName);
   end;
 Until (Entries <> 1) or (Result <> NO_ERROR);

 WNetCloseEnum( EnumHandle );
end;  { Find All Computers }


Комментарий от McSimm:
Для Делфи 5 и выше (ниже - не проверял) надо объявлять переменные

 BufSize     : Cardinal;
 Entries     : Cardinal;

Copyright ©   "Мастера DELPHI"   E-mail:   delphi@mastak.com  http://www.delphimaster.ru
Источник получения информации: http://www.delphimaster.ru
Hosted by uCoz