Форум: "Сети";
Текущий архив: 2003.04.03;
Скачать: [xml.tar.bz2];
Вниз
Поиск компьютеров в сети. Найти похожие ветки
← →
Alecs (2003-02-10 12:10) [0]Каким образом мне получить список всех компьютеров в локальной сети??????????????????????
← →
alev (2003-02-10 12:27) [1]Зайди на www.sources.ru,
я там находил....
← →
Yelchev (2003-02-10 12:32) [2]Это можно сделать с помощью функций WinApi таких как WNetOpenEnum и WNetEnumResource
← →
O6OPMOT (2003-02-10 13:17) [3]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;
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2003.04.03;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c