![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Доброго времени суток товарищи.
Есть небольшая проблема. Необходимо получить список доступных ПК в локальной сети. Изучив множество ссылок и форумов решения так и не нашел. В конечно итого необходимо получить что то типа того что выдает данная программа http://www.nirsoft.net/utils/wake_on_lan.html Помогите пожалуйста. Заранее спасибо. |
|
#2
|
||||
|
||||
|
Код:
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, Entries, 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; |
|
#3
|
|||
|
|||
|
Спасибо, но данный код я уже видел раз 10 и после чательного его изучения он не заработал...
|
|
#4
|
||||
|
||||
|
Так и должно быть, это свойство большинства кода в этих ваших интернетах. Своя голова на что?
Беглым взглядом вижу, что проблема может быть со string[25] в модных версиях Delphi, поскольку ShortString не поддерживают Юникод. Проверять и компилировать лень. Жарко, да и выходные. |
|
#5
|
||||
|
||||
|
код WNetOpenEnum - WNetEnumResource - WNetCloseEnum работает
|
|
#6
|
|||
|
|||
|
Я понимаю что данный код работает, но конкретно в той реализации которая представлена он возвращает 0 компьютеров, я не знаю с чем это связанно... Я так понимаю что получить данный список можно только основываясь на данных функциях и все? На данный момент использую код взятый из исходников программы "Пользователи и группы домена." скачанный с сайта http://rouse.drkb.ru/network.php но полученный список не достаточно актуальный... И большая часть либо выключенная либо имеет другой IP... мне нужен список более актуальный, а точнее то что работает в данный момент...
Последний раз редактировалось AngelNine, 11.08.2014 в 10:30. |