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

Получить список доменов

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

Получить список доменов

Бог есть. Он просто администрит другой домен...

Переменная List заполняется списком доменов. Функция возвращает код ошибки обращения к сети.


function FillNetLevel(xxx: PNetResource; list: TStrings): Word;
type
  PNRArr = ^TNRArr;
  TNRArr = array[0..59] of TNetResource;
var
  x: PNRArr;
  tnr: TNetResource;
  I: integer;
  EntrReq,
    SizeReq,
    twx: Integer;
  WSName: string;
begin
  Result := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY,
    RESOURCEUSAGE_CONTAINER, xxx, twx);
  if Result = ERROR_NO_NETWORK then
    Exit;
  if Result = NO_ERROR then
  begin
    New(x);
    EntrReq := 1;
    SizeReq := SizeOf(TNetResource) * 59;
    while (twx < > 0) and
      (WNetEnumResource(twx, EntrReq, x, SizeReq) <> ERROR_NO_MORE_ITEMS) do
    begin
      for i := 0 to EntrReq - 1 do
      begin
        Move(x^[i], tnr, SizeOf(tnr));
        case tnr.dwDisplayType of
          RESOURCEDISPLAYTYPE_DOMAIN:
            begin
              if tnr.lpRemoteName < > '' then
                WSName := tnr.lpRemoteName
              else
                WSName := tnr.lpComment;
              list.Add(WSName);
            end;
        else
          FillNetLevel(@tnr, list);
        end;
      end;
    end;
    Dispose(x);
    WNetCloseEnum(twx);
  end;
end;

Функция Delphi, именуемая FillNetLevel, пополняет список доменов с помощью Windows Network API. Вот подробное описание того, что код делает:

Подпись функции

Функция принимает два параметра: * xxx: Указатель на структуру PNetResource, которая представляет собой сетевой ресурс. * list: Объект TStrings, который используется для хранения списка доменов.

Функция возвращает целочисленное значение, указывающее статус ошибки операции. В частности, она возвращает код ошибки Windows (например, ERROR_NO_NETWORK, NO_ERROR и т.д.).

Основной логик

Функция сначала вызывает WNetOpenEnum для открытия перечисления сетевых ресурсов. Если результат равен ERROR_NO_NETWORK, функция выходит из программы сразу.

Если результат равен NO_ERROR, функция выделяет память для массива из 60 структур TNetResource с помощью New. Затем она настраивает переменные для отслеживания количества записей и размера каждой записи.

Функция затем вступает в цикл, который продолжается до тех пор, пока не будут доступны более сетевых ресурсов (то есть WNetEnumResource возвращает ERROR_NO_MORE_ITEMS). В каждом шаге цикла она: 1. Перемещает данные из массива в локальную переменную TNetResource, называемую tnr. 2. Проверяет, является ли тип отображения ресурса RESOURCEDISPLAYTYPE_DOMAIN. Если да: * Извлекает имя домена из поля lpRemoteName или комментария из поля lpComment (если lpRemoteName пуст). * Добавляет извлеченное имя домена в список с помощью list.Add. 3. Рекурсивно вызывает функцию FillNetLevel для любых подресурсов, найденных в tnr. Это позволяет функции обследовать иерархию сетевых ресурсов.

После обработки всех ресурсов функция освобождает выделенную память с помощью Dispose, закрывает перечисление с помощью WNetCloseEnum и возвращает статус ошибки.

Функция FillNetLevel позволяет получить список доменов на компьютере, подключенных к сети, и возвращает код ошибки при обращении к сети.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 10:39:13/0.0035610198974609/0