Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Список компьютеров в лок. сети [D7, Win2k, WinXP]


Stanislav ©   (2005-10-03 16:33:00) 

Подскажите пожалуйста как получить список всех компьютеров работающих в локальной сети ?


Vetalich   (2005-10-18 23:48:00) [1]

А не подскажите как етим пользоваться...
очень надо...


alexbou   (2005-10-03 18:14:00) [2]

Вызов - EnumNetRes(nil), так как функция рекурсивная

Выдает верхние домены и хосты для всех сетевых служб


alexbou   (2005-10-03 18:13:00) [3]

function TForm1.EnumNetRes(lpnr: PNetResource): Boolean;
type
 TNetResourceArray = array [0..65535] of TNetResource;
 PNRA = ^TNetResourceArray;
var
 dwResult, dwResultEnum: DWORD;
 hEnum: THandle;
 cbBuffer: DWORD;
 cEntries: DWORD;
 i: DWORD;
 lpnrLocal: PNRA;
begin
 cbBuffer := 16384;
 cEntries := DWORD(-1);

 dwResult := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY,
     0, lpnr, hEnum);

 if (dwResult <> NO_ERROR) then begin
//    ShowMessage('WNetEnumOpen error');
   Result := false;
   Exit;
 end;

 lpnrLocal := Pointer(GlobalAlloc(GPTR, cbBuffer));

 repeat
   // init buffer
   ZeroMemory(lpnrLocal, cbBuffer);

   // call WNetEnumResource
   dwResultEnum := WNetEnumResource(hEnum, cEntries, lpnrLocal, cbBuffer);

   // if success loop
   if dwResultEnum = NO_ERROR then
     for i := 0 to cEntries - 1 do begin
       Memo1.Lines.Add(lpnrLocal[i].lpRemoteName);
       Application.ProcessMessages;
       if not FSearch then break;
       if lpnrLocal[i].dwUsage and RESOURCEUSAGE_CONTAINER = RESOURCEUSAGE_CONTAINER then
         EnumNetRes(@lpnrLocal[i]);
     end
   else if dwResultEnum <> ERROR_NO_MORE_ITEMS then begin
//      ShowMessage('WNetEnumResource error');
     Result := false;
     Exit;
   end;

 until FSearch and not (dwResultEnum <> ERROR_NO_MORE_ITEMS);

 dwResult := WNetCloseEnum(hEnum);

 GlobalFree(Cardinal(lpnrLocal));

 if dwResult <> NO_ERROR then begin
//    ShowMessage('WNetCloseEnum error');
   Result := false;
   Exit
 end;

 Result := true;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо