La Web del Programador: Comunidad de Programadores
 
    Pregunta:  18592 - COMO PUEDO LEER UNIDADES Y EQUIPOS CONECTADOS A MI COMPUTADO
Autor:  Ramiro Arias
Como puedo obtener la informacion de los Unidades, directorios de mi computador y el nombre de los equipos que esten conectados a la red.
Necesito hacer una forma muy parecida al windows explorer. Estuve mirando los componentes DriveList, FilterList, etc. pero a estos solo me trabajan si asigno a una unidad de red las carpetas compartidades de los otros equipos.

Agradezco la ayuda que me puedan dar. Gracias

  Respuesta:  Miguel Lucero
Espero que el siguiente código te sirva
Creo que lo saqué de la página del club delphi: http://www.clubdelphi.com

---------------------------------------
Llamar a la función FindComputer, ésta devolverá un error de WinAPI en caso contrario.
La función llenará un StringList con los nombres de las computadoras de la RED.

unit FindComp;

interface

uses
Windows, Classes;

function FindComputers: DWORD;

var
Computers: TStringList;

implementation

uses
SysUtils;

const
MaxEntries = 250;

function FindComputers: DWORD;

var
EnumWorkGroupHandle, EnumComputerHandle: THandle;
EnumError: DWORD;
Network: TNetResource;
WorkGroupEntries, ComputerEntries: DWORD;
EnumWorkGroupBuffer, EnumComputerBuffer: array[1..MaxEntries] of TNetResource;
EnumBufferLength: DWORD;
I, J: DWORD;

begin

Computers.Clear;

FillChar(Network, SizeOf(Network), 0);
with Network do
begin
dwScope := RESOURCE_GLOBALNET;
dwType := RESOURCETYPE_ANY;
dwUsage := RESOURCEUSAGE_CONTAINER;
end;

EnumError := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, @Network,
EnumWorkGroupHandle);

if EnumError = NO_ERROR then
begin
WorkGroupEntries := MaxEntries;
EnumBufferLength := SizeOf(EnumWorkGroupBuffer);
EnumError := WNetEnumResource(EnumWorkGroupHandle, WorkGroupEntries, @EnumWorkGroupBuffer, EnumBufferLength);

if EnumError = NO_ERROR then
begin
for I := 1 to WorkGroupE