Hur gör man för att få fram vilka som är inne på nätverket (om man har ett litet nätverk på c:a 8st datorer)
Nätverk 2
1 svar · 323 visningar · startad av Niclas Ohlsson
Om du menar vilka datorer som är anslutna så fungerar följande fint:
--------------------------------
procedure TForm1.Button1Click(Sender: TObject);
procedure Enum(h: THandle);
var
nr: array[0..2000] of TNetResource;
nRes, cbBuf : Cardinal;
i: Integer;
he: THandle;
begin
nRes := 100;
cbBuf := sizeof(nr);
FillChar(nr, sizeof(nr), 0);
WNetEnumResource(h, nRes, @nr, cbBuf);
for i := 0 to nRes-1 do
begin
if (nr.dwDisplayType in [RESOURCEDISPLAYTYPE_DOMAIN]) then
treeview1.items.add(treeview1.TopItem,pchar(nr.lpRemoteName));
if (nr.dwDisplayType in [RESOURCEDISPLAYTYPE_DIRECTORY,RESOURCEDISPLAYTYPE_SERVER]) and Assigned(nr.lpRemoteName) then
treeview1.items.addchild(treeview1.TopItem,pchar(nr.lpRemoteName));
if nr.dwDisplayType in [RESOURCEDISPLAYTYPE_DOMAIN,
RESOURCEDISPLAYTYPE_NETWORK] then
begin
WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_DISK,
RESOURCEUSAGE_ALL, @nr, he);
Enum(he);
WNetCloseEnum(he);
end;
end;
end;
var
he: THandle;
begin
treeview1.Items.Clear;
WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY,
RESOURCEUSAGE_ALL, nil, he);
Enum(he);
WNetCloseEnum(he);
end;
-----------------------------------
Släng upp en knapp och en Treeview.
Körde det här på jobb med ett jävla stort nätverk, flera hundra datorer, och det tog ett tag för den att bli klar. Om det bara är c:a 8 datorer bör det gå betydligt snabbare.
------------------
winne.net