Listar computadores - NetView

25/11/2005

Boa tarde.
Gostaria de saber se existe uma maneira pratica de lista os computadores de
conectados a minha rede.
Jah consegui fazer uma [i:4b8716e5c8]gambiarra[/i:4b8716e5c8] 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.


Rcasistemas

Currículo

Respostas

25/11/2005

Emerson

tente essa rotina:

var
  hEnum, dwResult, dwResultEnum : DWORD;
  lpnrLocal : array
        [0..16384 div SizeOf(TNetResource)&93; 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&93;.lpRemoteName)
    ListBox1.Items.Add( lpnrLocal&91;i&93;.lpRemoteName );
  end;

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



Responder Citar

25/11/2005

Rcasistemas Currículo

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


Responder Citar