Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-05-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Computadoras conectadas a la red

Resulta que quiero listar en un ListBox, todas las computadoras que esten conectadas a la red de mi equipo. Buscando y leyendo, encontre esto, muy interesante:

Conocer los puestos disponibles en nuestra red (sólo Windows NT/2000/XP)
(Por Demetrio Quirós - Grupo Albor)


Para obtener la lista de PC conectados a nuestra red podemos emplear el método descrito en otra idea de esta sección o bien, utilizar la función NetServerEnum, disponible para Windows NT/2000/XP. Delphi no incorpora la definición de esta función, por lo que tendremos que hacerlo nosotros. También es posible obtener de la sede del Proyecto Jedi (vea en la sección de enlaces) la traducción a Delphi del API LanManager, con lo que nos ahorramos el trabajo y tendremos todas las funciones, estructuras y constantes definidas.

Código Delphi [-]
function NetServerEnum(servername: LPWSTR;
                       level: DWORD;
                       bufptr: Pointer;
                       prefmaxlen: DWORD;
                       entriesread: LPDWORD;
                       totalentries: LPDWORD;
                       servertype: DWORD;
                       domain: LPWSTR;
                       resume_handle: LPDWORD): DWORD; stdcall;
                       external 'NetApi32.dll' name 'NetServerEnum';

Tras la llamada a NetServerEnum es necesario liberar el espacio de memoria utilizado mendiante la función NetApiBufferFree. Tampoco está definida en Delphi, así que...

Código Delphi [-]
function NetApiBufferFree(Buffer: Pointer): DWORD; stdcall;
                       external 'NetApi32.dll' name 'NetApiBufferFree';

De entre las estructuras de datos que pueden ser utilizadas con esta función vamos a escoger la SERVER_INFO_100, suficiente para nuestro propósito:

Código Delphi [-]
type
  TSERVER_INFO_100 = packed record
    sv100_platform_id: DWORD; // Identificador de plataforma
    sv100_name: LPWSTR;       // Cadena Unicode conteniendo el nombre del puesto
  end;
  PSERVER_INFO_100 = ^TSERVER_INFO_100;

Otras constantes que nos serán de utilidad son:

Código Delphi [-]
const
  MAX_PREFERRED_LENGTH = (DWORD(-1));
  SV_TYPE_ALL  = $FFFFFFFF;
  ERROR_MORE_DATA = 234;
  ERR_SUCCESS = 0;

Con todo esto, ya podemos escribir nuestro código, asociado al evento OnClick de un botón (Button1) y almacenar los nombres de los puestos de trabajo devueltos por la función en un ListBox (LisBox1).

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  res: DWORD;
  leidos, total, seguir: DWORD;
  info, tInfo: PSERVER_INFO_100;
  f: Integer;
begin
  ListBox1.Clear;
  seguir := 0;
  repeat
    res := NetServerEnum(nil, 100, @info, MAX_PREFERRED_LENGTH, 
                         @leidos, @total, SV_TYPE_ALL, nil, @seguir);
    tInfo := info;
    if ((res = ERROR_MORE_DATA) or (res = ERR_SUCCESS)) and (leidos > 0) then
      for f := 0 to leidos -1 do
      begin
        ListBox1.Items.Add(tInfo^.sv100_name);
        inc(tInfo);
      end;
    NetApiBufferFree(info);
  until (res <> ERROR_MORE_DATA);
end;

Pero no se como implementarlo. Alguien me puede dar una mano?

Saludos y gracias
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #2  
Antiguo 27-05-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Ojo, por ahi hice una pregunta muy tonta, con implementarlo me refiero a como usarlo en el sentido de, si me conviene crear una dll con estas funciones, o simplemente en la implementacion de mi aplicacion.
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
3 capas- ¿Cuántas Computadoras? cecito Providers 2 06-05-2006 22:05:44
ping a las computadoras chucoptero Internet 7 20-01-2006 18:47:18
computadoras a 64-bits dape Varios 3 04-10-2005 05:19:22
El mal de las computadoras madman Noticias 1 26-11-2003 23:46:48
Localizar computadoras en la red y conectarse a ellas madman Internet 15 30-06-2003 06:43:57


La franja horaria es GMT +2. Ahora son las 00:36:24.


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
Copyright 1996-2007 Club Delphi