![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Список компьютеров в лок. сети [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;