![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Получить список всех компьютеров в сети.
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;