Liste des machines sur un réseau local (tout le réseau de Win)
Bonjour,
J'aimerais savoir comment explorer (connaître) la liste des domaines et machines de mon réseau local.
J'ai écrit (plutôt piqué) le code suivant qui ne me permet que d'afficher dans un TListBox les machines se situant dans le domaine où je suis:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| function ExcludeDoubleBackSlach( NomReseau : string ) : string;
var
I : Integer;
Temp : string;
begin
Temp := '';
if ( lstrlen( PChar( NomReseau) ) < 4 ) then
begin
Result := NomReseau;
Exit;
end;
if ( ( NomReseau[1] = '\' ) and (NomReseau[2] = '\' ) ) then
begin
for I := 3 to lstrlen( PChar( NomReseau) ) do Temp := Temp + NomReseau[I];
Result := Temp;
end else
Result := NomReseau;
end;
function RefreshPc : Boolean;
var
hEnum : DWORD;
dwResult : DWORD;
cEntries : DWORD;
cbBuffer : DWORD;
Nom : string;
IP : string;
Com : string;
I : Integer;
lpnr : PNetResource;
begin
Result := False;
cEntries := $FFFFFFFF;
cbBuffer := 16384;
lpnr := PNETRESOURCE( GlobalAlloc(GPTR, cbBuffer) );
if ( WNetOpenEnum( RESOURCE_CONTEXT, RESOURCETYPE_ANY, 0, lpnr, hEnum ) <> NO_ERROR ) then Exit;
dwResult := WNetEnumResource( hEnum, cEntries, lpnr, cbBuffer );
if (dwResult <> NO_ERROR) then Exit;
Inc( lpnr );
{ On boucle sur toute les machines trouvées }
for I := 0 to ( cEntries - 1 ) do
begin
Nom := ExcludeDoubleBackSlach( lpnr^.lpRemoteName ); // Nom de la machine (dont on enlève les '\\' au début)
IP := HostToIP( Nom ); // IP de la machine
Com := lpnr^.lpComment; // Commentaire sur la machine
Form1.ListBox1.Items.Add(Nom+' '+Com);
Inc( lpnr );
end;
// GlobalFree( PNETRESOURCE( lpnr ) );
WNetCloseEnum( hEnum );
end; |
Mon but c'est de connaitre toutes les machines comme Tout le réseau du Favoris réseau de Windows XP