Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Enumerando recursos de red (https://www.clubdelphi.com/foros/showthread.php?t=12782)

Novás 27-07-2004 20:26:49

Enumerando recursos de red
 
He intentado implementar este código pertenecienta a Trucomania

Código Delphi [-]
procedure TFrmPrincipal.ActRecursosRedExecute(Sender: TObject);
 procedure Enumera(Cual:PnetResource);
 var
   Mango           :THandle;
   NumeroEntradas  :DWord;
   Buffer          :Array [1..100] of TNetResource;
   LongBuffer      :DWord;
   n               :Integer;
   ListItem        :TListItem;
 begin
   Application.ProcessMessages;
   LongBuffer:=SizeOf(Buffer);

   If WNetOpenEnum( RESOURCE_GLOBALNET,
                    RESOURCETYPE_ANY,
                    0,
                    Cual,
                    Mango
                    )<> No_ERROR then
     ShowMessage('Error');

 { 100 entradas (máximo) por cada servidor}
   NumeroEntradas:=100;
   WNetEnumResource( Mango,
                     NumeroEntradas,
                     @Buffer[1],
                     LongBuffer
                     );

   for n:=1 to NumeroEntradas do
   begin
     ListItem:=FrmRecursosRed.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}
  FrmRecursosRed.ListView1.Clear;
  FrmrecursosRed.ListView1.Columns.Clear;
  with FrmRecursosRed.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}
  Enumera(nil);
  FrmRecursosRed.ShowModal;
end;

Aparentemente funciona pero siempre me sale el mensaje de Error del ShowMessage. A que puede ser debido

roman 28-07-2004 05:14:37

Acabo de probar el código que escribes y funciona sin ningún problema. Lo único que puedo aconsejarte es que te fijes en el valor que devuelve la función WNetOpenEnum (tendrás que asignarlo a una variable temporal) y consultes la ayuda del sdk de Windows (menú Help|Windows SDK) que lista los posibles códigos de error y sus causas para al menos darte una idea de por donde va el problema.

// Saludos


La franja horaria es GMT +2. Ahora son las 22:00:25.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi