ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

nome dos computadores na rede

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
rrgotardo
Novato
Novato


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 55

MensagemEnviada: Qui Ago 09, 2007 4:03 pm    Assunto: nome dos computadores na rede Responder com Citação

Gostaria de saber omo posso pegar o nome de todos os computadores da rede e colocar em um combobox. Se alguem puder me dar uma ajudinha ficarei grato.
vlw.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gilsonnrodrigues
Moderador
Moderador


Registrado: Quinta-Feira, 14 de Abril de 2005
Mensagens: 9009
Localização: Governador Valadares-MG

MensagemEnviada: Sex Ago 10, 2007 1:07 pm    Assunto: Responder com Citação

Código:
type
  PNetResourceArray = ^TNetResourceArray;
  TNetResourceArray = array[0..100] of TNetResource;

function CreateNetResourceList(ResourceType : DWord;
  NetResource : PNetResource;
  out Entries : DWord;
  out List : PNetResourceArray) : Boolean;
var
  EnumHandle : THandle;
  BufSize : DWord;
  Res : DWord;
begin
  Result := False;
  List := nil;
  Entries := 0;
  if WNetOpenEnum(RESOURCE_GLOBALNET, ResourceType, 0, NetResource, EnumHandle) = NO_ERROR then
  begin
    try
      BufSize := $4000; // 16 kByte
      GetMem(List, BufSize);
      try
        repeat
          Entries := DWord(-1);
          FillChar(List^, BufSize, 0);
          Res := WNetEnumResource(EnumHandle, Entries, List, BufSize);
          if Res = ERROR_MORE_DATA then
          begin
            ReAllocMem(List, BufSize);
          end;
        until not (Res = ERROR_MORE_DATA);

        Result := Res = NO_ERROR;
        if not Result then
        begin
          FreeMem(List);
          List := nil;
          Entries := 0;
        end;
      except
        FreeMem(List);
        raise;
      end;
    finally
      WNetCloseEnum(EnumHandle);
    end;
  end;
end;

procedure ScanNetworkResources(ResourceType, DisplayType : DWord; List : TStrings);

  procedure ScanLevel(NetResource : PNetResource);
  var
    Entries : DWord;
    NetResourceList : PNetResourceArray;
    i : Integer;
  begin
    if CreateNetResourceList(ResourceType, NetResource, Entries, NetResourceList) then
    try
      for i := 0 to Integer(Entries) - 1 do
      begin
        if (DisplayType = RESOURCEDISPLAYTYPE_GENERIC) or
          (NetResourceList[i].dwDisplayType = DisplayType) then
        begin
          List.AddObject(NetResourceList[i].lpRemoteName, Pointer(NetResourceList[i].dwDisplayType));
        end;
        if not ((NetResourceList[i].dwUsage and RESOURCEUSAGE_CONTAINER) = 0) then
          ScanLevel(@NetResourceList[i]);
      end;
    finally
      FreeMem(NetResourceList);
    end;
  end;

begin
  ScanLevel(nil);
end;


exemplos de uso:

Lista os Pcs em rede
Código:
procedure TForm1.Button1Click(Sender : TObject);
begin
  ScanNetworkResources(RESOURCETYPE_DISK, RESOURCEDISPLAYTYPE_SERVER, ListBox1.Items);
end;


lista os compartilhamentos

Código:
procedure TForm1.Button1Click(Sender : TObject);
begin
  ScanNetworkResources(RESOURCETYPE_DISK, RESOURCEDISPLAYTYPE_SHARE, ListBox1.Items);
end;


Lista tudo:

Código:
procedure TForm1.Button1Click(Sender : TObject);
begin
  ScanNetworkResources(RESOURCETYPE_DISK, RESOURCEDISPLAYTYPE_GENERIC, ListBox1.Items);
end;


espero ter ajudado!!!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB