Array
(
)

Listar computadores - NetView

Rcasistemas
|
MVP
    25 nov 2005

Boa tarde.
Gostaria de saber se existe uma maneira pratica de lista os computadores de
conectados a minha rede.
Jah consegui fazer uma gambiarra utilizando o NetView do DOS, enviando
o conteudo para um arquivo de texto e depois tratando o seu conteudo, mas assim
gera um tempo de espera muito grande.
NÆo existe nada um pouco + pratico q isto.
Agradeceria muito se alguem pudesse me ajudar
Abracos.


Emerson
   - 25 nov 2005

tente essa rotina:

#Código

var
hEnum, dwResult, dwResultEnum : DWORD;
lpnrLocal : array
[0..16384 div SizeOf(TNetResource)] of TNetResource; // ponteiro para as estruturas enumeradas
i : integer;
cEntries : Longint;
cbBuffer: DWORD;
begin
centries := -1; // enumera todas as entradas possíveis
cbBuffer := 16384; // 16K

// chama a função WNetOpenEnum para inciar a enumeração.
dwResult := WNetOpenEnum(
RESOURCE_CONTEXT, // Enumera o recursos atualmente conectados.
RESOURCETYPE_DISK, // todos os recursos
0, // enumera todos os recursos
nil, // NULL
hEnum // handle para os recursos
);

if (dwResult <> NO_ERROR) then
begin
// poderia processar os erros com um manipulador de erros
// definido na aplicação.
Exit;
end;

// inicializa o buffer.
FillChar( lpnrLocal, cbBuffer, 0 );

// chama a função WNetEnumResource para continuar a enumeração
dwResultEnum := WNetEnumResource(hEnum, // manipulador
DWORD(cEntries), // definido localmente como -1
@lpnrLocal, // LPNETRESOURCE
cbBuffer); // tamanho do buffer

ListBox1.Clear;
// preencho uma listbox
for i := 0 to cEntries - 1 do
begin
// lê cada estrutura para pegar o nome do
// recurso remoto (lpnrLocal[i].lpRemoteName)
ListBox1.Items.Add( lpnrLocal[i].lpRemoteName );
end;

// chama WNetCloseEnum para finalizar a enumeração.
dwResult := WNetCloseEnum(hEnum);
end;



Rcasistemas
|
MVP
    25 nov 2005

Vlw kra, funcionou direitinho....
Brigadaum....