Недавно добавленные исходники

•  TDictionary Custom Sort  2 666

•  Fast Watermark Sources  2 538

•  3D Designer  4 175

•  Sik Screen Capture  2 850

•  Patch Maker  3 054

•  Айболит (remote control)  2 885

•  ListBox Drag & Drop  2 482

•  Доска для игры Реверси  74 538

•  Графические эффекты  3 305

•  Рисование по маске  2 530

•  Перетаскивание изображений  2 118

•  Canvas Drawing  2 184

•  Рисование Луны  2 120

•  Поворот изображения  1 692

•  Рисование стержней  1 725

•  Paint on Shape  1 208

•  Генератор кроссвордов  1 795

•  Головоломка Paletto  1 442

•  Теорема Монжа об окружностях  1 800

•  Пазл Numbrix  1 343

•  Заборы и коммивояжеры  1 607

•  Игра HIP  1 096

•  Игра Go (Го)  1 054

•  Симулятор лифта  1 215

•  Программа укладки плитки  1 009

•  Генератор лабиринта  1 315

•  Проверка числового ввода  1 081

•  HEX View  1 260

•  Физический маятник  1 127

•  Задача коммивояжера  1 166

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Получить список пользователей, подключённых к сети




Корпорации IBM срочно требуется ламер для организации и проведения увеселительных мероприятий.


unit NetUtils;

interface

uses
  Windows, Classes;

function GetContainerList(ListRoot:PNetResource):TList;

type
  {$H+}
  PNetRes = ^TNetRes;
  TNetRes = record
    dwScope : Integer;
    dwType : Integer;
    dwDisplayType : Integer;
    dwUsage : Integer;
    LocalName : string;
    RemoteName : string;
    Comment : string;
    Provider : string;
  end;
  {H-}


implementation

uses SysUtils;

type
  PnetResourceArr = ^TNetResource;

function GetContainerList(ListRoot:PNetResource):TList;
{возвращает список сетевых имён с подуровня ListRoot, каждый
элемент списка TList - это PNetRec, где поле RemoteName определяет
соответственно сетевое имя элемента списка. Если ListRoot=nil, то
возвращается самый верхний уровень типа:
1. Microsoft Windows Network
2. Novell Netware Network
Чтобы получить список доменов сети Microsoft, нужно вызвать эту
функцию второй раз, передав ей в качестве параметра,
соответствующий элемент списка, полученного при первом её вызове.
Чтобы получить список компьютеров домена - вызвать третий раз...}
var
  TempRec : PNetRes;
  Buf : Pointer;
  Count,
  BufSize,
  Res : DWORD;
  lphEnum : THandle;
  p : PNetResourceArr;
  i : SmallInt;
  NetworkList : TList;
begin
  NetworkList := TList.Create;
  Result:=nil;
  BufSize := 8192;
  GetMem(Buf, BufSize);
  try
    Res := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
    RESOURCEUSAGE_CONTAINER{0}, ListRoot,lphEnum);
    {в результате получаем ссылку lphEnum}
    if Res <> 0 then
      raise Exception(Res);
    Count := $FFFFFFFF; {требуем выдать столько записей в список, сколько есть}
    Res := WNetEnumResource(lphEnum, Count, Buf, BufSize);
    {в буфере Buf - списочек в виде массива указателей на структуры
    типа TNetResourceArr, а в Count - число этих структур}
    if Res = ERROR_NO_MORE_ITEMS then
      Exit;
    if (Res <> 0) then
      raise Exception(Res);
    P := PNetResourceArr(Buf);
    for I := 0 to Count - 1 do
    begin
      // Требуется копирование из буфера, так как он
      // действителен только до следующего вызова функций группы WNet
      New(TempRec);
      TempRec^.dwScope := P^.dwScope;
      TempRec^.dwType := P^.dwType ;
      TempRec^.dwDisplayType := P^.dwDisplayType ;
      TempRec^.dwUsage := P^.dwUsage ;
      {имеются ввиду вот эти указатели}
      TempRec^.LocalName := StrPas(P^.lpLocalName);
      {в смысле - строки PChar}
      TempRec^.RemoteName := StrPas(P^.lpRemoteName);
      TempRec^.Comment := StrPas(P^.lpComment);
      TempRec^.Provider := StrPas(P^.lpProvider);
      NetworkList.Add(TempRec);
      Inc(P);
    end;
    Res := WNetCloseEnum(lphEnum);
    {а следующий вызов - вот он!}
    if Res <> 0 then
      raise Exception(Res);
    Result:=NetWorkList;
  finally
    FreeMem(Buf);
  end;
end;

end.





Похожие по теме исходники

Список запущенных процессов

Список установленных устройств

Учет посетителей интернет-салона

Автонастройщик сети

 

Передача видео по сети

Передача удаленного экрана по сети (Remote Screen)




Copyright © 2004-2023 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте