Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как найти все комьютеры в сети 4

Delphi , Интернет и Сети , Сеть



Автор: http://delphi.mastak.ru

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 }

Программный код на Delphi для поиска всех компьютеров в сети рабочей группы с использованием функций WNetOpenEnum и WNetEnumResource.

Описание работы кода:

  1. Процедура FindAllComputers принимает строку Workgroup как входной параметр, которая является именем рабочей группы для поиска.
  2. Она инициализирует массив Computer для хранения имён компьютеров, найденных в рабочей группе, с максимальным количеством 500 компьютеров.
  3. Она настраивает структуру TNetResource (WorkgroupRS) для указания параметров для сетевого обхода.
  4. Процедура вызывает функцию WNetOpenEnum, чтобы открыть обход handle для указанной рабочей группы.
  5. Затем она входит в цикл, который повторно вызывает функцию WNetEnumResource для обхода ресурсов в рабочей группе.
  6. Для каждого найденного ресурса она проверяет, является ли ресурс компьютером (тип 3) и если обход был успешен (результат = NO_ERROR). Если это так, она увеличивает переменную ComputerCount и хранит имя компьютера в массиве Computer.
  7. Цикл продолжается, пока не будут найдены больше ресурсов или не произойдёт ошибка.
  8. Наконец, процедура закрывает обход handle с помощью функции WNetCloseEnum.

Чтобы найти все компьютеры в сети рабочей группы с помощью этого кода:

  1. Создайте новый проект Delphi и добавьте необходимые библиотеки (например, Windows.pas).
  2. Скопируйте процедуру FindAllComputers в ваш проект.
  3. Вызовите процедуру FindAllComputers, передав имя рабочей группы как строковый аргумент, например: FindAllComputers('MYWORKGROUP');.
  4. Массив Computer будет содержать имена компьютеров, найденных в рабочей группе.

Обратите внимание, что этот код может не найти все компьютеры в сети рабочей группы, если некоторые компьютеры не видны или имеют настройки, которые препятствуют обходу. Кроме того, это код специфичен для Windows и может не работать на других платформах.

В статье описывается процедура FindAllComputers, которая позволяет найти и записать в массив все компьютеры в сети, используя функцию WNetOpenEnum.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Сеть ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 15:42:13/0.0050399303436279/1