Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Получить список всех компьютеров в сети.


yel ©   (2006-10-20 10:45:00) 

Здравствуйте.
Не подскажите, как получить список всех компьютеров в сети?
Заранее спасибо.


DrPass   (2006-10-20 15:12:00) [1]


> если на компе несколько сетевух и каждая в свою сеть смотрит?

...то вышеуказанный пример все равно будет работать


SergKon   (2006-10-20 13:16:00) [2]

TO yel:       Не за что


Правильный Вася   (2006-10-20 11:38:00) [3]

а если на компе несколько сетевух и каждая в свою сеть смотрит?


yel   (2006-10-20 11:20:00) [4]


> Правильный Вася   (20.10.06 11:16) [2]
> какой сети?

локальной :)
но то что написал SergKon ©   (20.10.06 10:48) [1]
работает и очень хорошо (спасибо ему)

еще бы неплохо былобы получить рабочую группу


Правильный Вася   (2006-10-20 11:16:00) [5]

какой сети?


SergKon   (2006-10-20 10:48:00) [6]

procedure TChatForm.FindAllComputers(Workgroup: string);
var
 EnumHandle: THandle;
 WorkgroupRS: TNetResource;
 Buf: array[1..500] of TNetResource;
 BufSize: Cardinal; //Integer;
 Entries: Cardinal;
 Result: Cardinal;
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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо