![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск компьютеров в сети. [D5]
Alecs © (2003-02-10 12:10:00)Каким образом мне получить список всех компьютеров в локальной сети??????????????????????
O6OPMOT (2003-02-10 13:17:00) [1]procedure loadnetnode(NetNode: PNetResourceA);
var hEnum : THandle;
Count,BufSize: DWORD;
NR,Buf: PNetResourceA;
R: Integer;
CName:string;
const InitialSize = $1;
begin
R:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,
NetNode,hEnum);
if R <> NO_ERROR then exit;
BufSize:=InitialSize; GetMem(Buf,BufSize);
try
while True do
begin
Count:=$FFFFFFFF; // I wish to read ALL items
R:=WNetEnumResource(hEnum,Count, Buf, BufSize);
if R = ERROR_MORE_DATA then
begin // Oops ! The InitialSize is too small begin
Count:=$FFFFFFFF; // I wish to read ALL items
FreeMem(Buf); GetMem(Buf,BufSize);
R:=WNetEnumResource(hEnum,Count, Buf, BufSize);
end;
if R = ERROR_NO_MORE_ITEMS then exit; // All items are processed
if R <> NO_ERROR then Abort; // R is the error code. Process it!
NR:=Buf;
while Count > 0 do
begin
if NR.lpRemoteName <> nil then
CName:=StrPas(NR.lpRemoteName)
else
CName:="";
if NR.dwDisplayType=RESOURCEDISPLAYTYPE_NETWORK then CName:="MS Network";
if NR.dwDisplayType=RESOURCEDISPLAYTYPE_DOMAIN then
CName:="workgroup:"+CName;
Form1.ListBox1.Items.Add(CName);
LoadNetNode(NR);
// after modification
// Go to the next record
INC(NR);
DEC(Count);
end; //while Count > 0
end;
finally
WNetCloseEnum(hEnum); // Close handle
FreeMem(Buf); // Free memory1
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
LoadNetNode(nil);
end;
Yelchev (2003-02-10 12:32:00) [2]Это можно сделать с помощью функций WinApi таких как WNetOpenEnum и WNetEnumResource
alev (2003-02-10 12:27:00) [3]Зайди на www.sources.ru,
я там находил....