Explorando el entorno de red  

Enviado Por: Radikal (Q3 Team)
Web : http://www.q3.nu
Email: radikal@q3.nu
Fecha: 23/10/99

Truco accedido 95 veces

 


En este ejemplo, llenaremos un ListView con los recursos de red que encontremos (discos, impresoras y otros servidores)
Si tenemos intención de dejar explorar la red al usuario de nuestra aplicación, este será el primer paso que necesites.
El siguiente paso sería explorar cada uno de los recursos, o dejar que el usuario mapee uno de ellos a una impresora o disco local, en fin... que tu sabrás que pretendes hacer al explorar la red local.
De momento puedes usar este ejemplo y partir de él, que sin duda te será de ayuda.

El ejemplo enumera los recursos de red disponibles, partiendo de los recursos del propio ordenador, de tal manera que cuando se encuentra con otro ordenador, enumera (recursivamente) tambien los recursos que dispone.


El ejemplo:

  • Pon un TListView (ListView1) y un TButton en tu form
  • Mete todo este código en el evento OnClick del TButton:


     procedure TForm1.Button1Click(Sender: TObject);
    
     procedure Enumera(Cual:PnetResource);
     var
       Mango           :THandle;
       NumeroEntradas  :DWord;
       Buffer          :Array [1..100] of TNetResource;
       LongBuffer      :DWord;
       n               :Integer;
       ListItem        :TListItem;
     begin
       LongBuffer:=SizeOf(Buffer);
    
       If WNetOpenEnum( RESOURCE_GLOBALNET,
                        RESOURCETYPE_ANY,
                        0,
                        Cual,
                        Mango
                        )<> No_ERROR then ShowMessage('Error');
    
       {100 entradas (máximo) por cada servidor}
       {100 enties (max) per server}
       NumeroEntradas:=100;
       WNetEnumResource( Mango,
                         NumeroEntradas,
                         @Buffer[1],
                         LongBuffer
                         );
    
       for n:=1 to NumeroEntradas do
       begin
         ListItem:=ListView1.Items.Add;
         With ListItem do
         begin
           Caption:=String(Buffer[n].lpRemoteName);
           If Caption='' then Caption:='Inicio de red';
           SubItems.Add(String(Buffer[n].lpComment));
         end;
    
         if (Buffer[n].dwUsage and RESOURCEUSAGE_CONTAINER)=
             RESOURCEUSAGE_CONTAINER then
         begin
           ListItem.SubItems.Add('Servidor');
           Enumera(@Buffer[n]);
         end
           else
         begin
           if (Buffer[n].dwType and RESOURCETYPE_DISK)=
               RESOURCETYPE_DISK
               then ListItem.SubItems.Add('Disco') else
           if (Buffer[n].dwType and RESOURCETYPE_PRINT)=
               RESOURCETYPE_PRINT
               then ListItem.SubItems.Add('Impresora');
         end;
       end;
     end;
    
    
     begin
       {Inicializamos nuestro ListView}
       {Initialice our ListView}
       with ListView1 do
       begin
         ViewStyle:=vsReport;
         with Columns.Add do
         begin
           {Remote Name}
           Caption:='Nombre Remoto';
           Width:=150;
         end;
         with Columns.Add do
         begin
           {Comment}
           Caption:='Comentario';
           Width:=150;
         end;
         with Columns.Add do
         begin
           {Type}
           Caption:='Tipo';
           Width:=100;
         end;
       end;
       {Rellenamos el ListView}
       {Fill the ListView}
       Enumera(nil);
     end;