Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.08.2014, 13:38
AngelNine AngelNine вне форума
Прохожий
 
Регистрация: 08.08.2014
Сообщения: 9
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Список компьютеров в локальной сети

Доброго времени суток товарищи.
Есть небольшая проблема. Необходимо получить список доступных ПК в локальной сети. Изучив множество ссылок и форумов решения так и не нашел. В конечно итого необходимо получить что то типа того что выдает данная программа http://www.nirsoft.net/utils/wake_on_lan.html Помогите пожалуйста. Заранее спасибо.
Ответить с цитированием
  #2  
Старый 08.08.2014, 19:31
Аватар для @Rafa3L
@Rafa3L @Rafa3L вне форума
Начинающий
 
Регистрация: 09.11.2011
Адрес: Москва
Сообщения: 144
Версия Delphi: XE2
Репутация: 11216
По умолчанию

Код:
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  
Старый 09.08.2014, 11:40
AngelNine AngelNine вне форума
Прохожий
 
Регистрация: 08.08.2014
Сообщения: 9
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Спасибо, но данный код я уже видел раз 10 и после чательного его изучения он не заработал...
Ответить с цитированием
  #4  
Старый 09.08.2014, 16:33
Аватар для Freeman
Freeman Freeman вне форума
Местный
 
Регистрация: 05.10.2012
Адрес: Санкт-Петербург
Сообщения: 577
Версия Delphi: 6
Репутация: выкл
По умолчанию

Так и должно быть, это свойство большинства кода в этих ваших интернетах. Своя голова на что?

Беглым взглядом вижу, что проблема может быть со string[25] в модных версиях Delphi, поскольку ShortString не поддерживают Юникод. Проверять и компилировать лень. Жарко, да и выходные.
__________________
Не стоит путать форумы с богадельнями. © Bargest
Ответить с цитированием
  #5  
Старый 09.08.2014, 20:40
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

код WNetOpenEnum - WNetEnumResource - WNetCloseEnum работает
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #6  
Старый 11.08.2014, 10:19
AngelNine AngelNine вне форума
Прохожий
 
Регистрация: 08.08.2014
Сообщения: 9
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Я понимаю что данный код работает, но конкретно в той реализации которая представлена он возвращает 0 компьютеров, я не знаю с чем это связанно... Я так понимаю что получить данный список можно только основываясь на данных функциях и все? На данный момент использую код взятый из исходников программы "Пользователи и группы домена." скачанный с сайта http://rouse.drkb.ru/network.php но полученный список не достаточно актуальный... И большая часть либо выключенная либо имеет другой IP... мне нужен список более актуальный, а точнее то что работает в данный момент...

Последний раз редактировалось AngelNine, 11.08.2014 в 10:30.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:41.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025