Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-07-2011
Avatar de Alexander
Alexander Alexander is offline
Miembro
 
Registrado: May 2004
Posts: 235
Poder: 14
Alexander Va por buen camino
Post Saber si un PC esta conectado

Hola buen día.

Estoy buscando como saber si un PC especifico esta conectado a la red.

Muchas gracias por su apoyo.
__________________
Cielos azules
Responder Con Cita
  #2  
Antiguo 14-07-2011
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: May 2005
Posts: 1.335
Poder: 14
MAXIUM Va por buen camino
No recuerdo el tema, pero si usas el buscador con mi nick tal vez encuentres al respuesta.
Responder Con Cita
  #3  
Antiguo 14-07-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: Apr 2007
Ubicación: Motril, Granada
Posts: 2.921
Poder: 14
newtron Va camino a la fama
Haciendo un ping a la ip del equipo sabes si está conectado, lo que no sé es si podrás recoger el resultado del ping de alguna forma.

Otra manera sería compartir una carpeta del equipo e intentar abrir un fichero dentro de ella.

Saludos
Responder Con Cita
  #4  
Antiguo 14-07-2011
x_aguilarf x_aguilarf is offline
Miembro
 
Registrado: Apr 2006
Posts: 22
Poder: 0
x_aguilarf Va por buen camino
Esta función te devuelve los recursos de la red :
Código Delphi [-]

type
  PNetResourceArray = ^TNetResourceArray;
  TNetResourceArray = array [0 .. 100] of TNetResource;
  TResourceType = (
    rtAny       = 0,
    rtDisk      = 1,
    rtPrint     = 2,
    rtReserved  = 8,
    rtUnknow    = DWORD($FFFFFFFF)
  );
  TResourceDisplayType = (
    rdGeneric       = $00000000,
    rdDomain        = $00000001,
    rdServer        = $00000002,
    rdShare         = $00000003,
    rdFile          = $00000004,
    rdGroup         = $00000005,
    rdNetwork       = $00000006,
    rdRoot          = $00000007,
    rdShareAdmin    = $00000008,
    rdDirectory     = $00000009,
    rdTree          = $0000000A,
    rdNdsContainer  = $0000000B
  );

function CreateNetResourceList(ResourceType: TResourceType;
  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, DWord(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 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: TResourceType; DisplayType: TResourceDisplayType);

  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 (DWord(DisplayType) = RESOURCEDISPLAYTYPE_GENERIC) or
            (NetResourceList[i].dwDisplayType = DWord(DisplayType)) then
          begin


            ListBox1.Items.Add(NetResourceList^[i].lpRemoteName);


          end;
          if (NetResourceList[i].dwUsage and RESOURCEUSAGE_CONTAINER) <> 0 then
            ScanLevel(@NetResourceList[i]);
        end;
      finally
        FreeMem(NetResourceList);
      end;
  end;

begin
  ScanLevel(Nil);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ScanNetworkResources(rtDisk, rdServer);
end;

Podrías aprovechar esta función para detectar si el PC que buscas aparece en esta enumeración.

PD: Espero no haberme olvidado de ninguna parte del código...

Saludos
Responder Con Cita
  #5  
Antiguo 14-07-2011
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: May 2003
Posts: 7.424
Poder: 22
Lepe Va por buen camino
Si necesitas capturar el resultado de la línea de comando (ping), avisa y pongo el código que localicé por internet.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
saber quien esta conectado a mi programa delphi ingabraham Varios 25 21-06-2011 23:12:35
Saber si esta conectado el adaptador de corriente en una laptop javier_ecf API de Windows 8 14-01-2011 00:51:37
como saber si un clientSocket esta conectado pipo123 Internet 0 19-04-2007 22:22:20
¿ Quien está conectado a mi equipo ? Roilo Redes 1 27-07-2006 23:01:40
Saber si esta conectado Kaesbu Internet 1 22-09-2003 14:09:45


La franja horaria es GMT +2. Ahora son las 10:30:35.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi