Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-07-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 12.559
Poder: 27
dec Va camino a la famadec Va camino a la fama
Encontrar todas las Computadoras de una Red LAN TCP/IP

Llamar a la función <b>FindComputer, </b>ésta devolverá un error de WinAPI en caso contrario.

La función llenará un StringList con los nombres de las computadoras de la RED.

Código Delphi [-]
unit FindComp;

interface

uses
  Windows, Classes;

function FindComputers: DWORD;

var
  Computers: TStringList;

implementation

uses
  SysUtils;

const
  MaxEntries = 250;

function FindComputers: DWORD;

var
  EnumWorkGroupHandle, EnumComputerHandle: THandle;
  EnumError: DWORD;
  Network: TNetResource;
  WorkGroupEntries, ComputerEntries: DWORD;
  EnumWorkGroupBuffer, EnumComputerBuffer: array[1..MaxEntries] of TNetResource;
  EnumBufferLength: DWORD;
  I, J: DWORD;

begin

  Computers.Clear;

  FillChar(Network, SizeOf(Network), 0);
  with Network do
  begin
    dwScope := RESOURCE_GLOBALNET;
    dwType := RESOURCETYPE_ANY;
    dwUsage := RESOURCEUSAGE_CONTAINER;
  end;

  EnumError := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, @Network,
               EnumWorkGroupHandle);

  if EnumError = NO_ERROR then
  begin
    WorkGroupEntries := MaxEntries;
    EnumBufferLength := SizeOf(EnumWorkGroupBuffer);
    EnumError := WNetEnumResource(EnumWorkGroupHandle, WorkGroupEntries,
                 @EnumWorkGroupBuffer, EnumBufferLength);

    if EnumError = NO_ERROR then
    begin
      for I := 1 to WorkGroupEntries do
      begin
        EnumError := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0,
                     @EnumWorkGroupBuffer[i], EnumComputerHandle);
        if EnumError = NO_ERROR then
        begin
          ComputerEntries := MaxEntries;
          EnumBufferLength := SizeOf(EnumComputerBuffer);
          EnumError := WNetEnumResource(EnumComputerHandle, ComputerEntries,
                       @EnumComputerBuffer, EnumBufferLength);
          if EnumError = NO_ERROR then
            for J := 1 to ComputerEntries do
              Computers.Add(Copy(EnumComputerBuffer[J].lpRemoteName, 3,
                        Length(EnumComputerBuffer[J].lpRemoteName) - 2));
          WNetCloseEnum(EnumComputerHandle);
        end;
      end;
    end;
    WNetCloseEnum(EnumWorkGroupHandle);
  end;

  if EnumError = ERROR_NO_MORE_ITEMS then
    EnumError := NO_ERROR;
  Result := EnumError;

end;

initialization

  Computers := TStringList.Create;

finalization

  Computers.Free;

end.
Responder Con Cita
  #2  
Antiguo 25-07-2008
ljvenegas ljvenegas is offline
Miembro
 
Registrado: feb 2007
Posts: 13
Poder: 0
ljvenegas Va por buen camino
esata funcion es la
Responder Con Cita
  #3  
Antiguo 25-07-2008
ljvenegas ljvenegas is offline
Miembro
 
Registrado: feb 2007
Posts: 13
Poder: 0
ljvenegas Va por buen camino
esata funcion es la
Responder Con Cita
  #4  
Antiguo 25-07-2008
ljvenegas ljvenegas is offline
Miembro
 
Registrado: feb 2007
Posts: 13
Poder: 0
ljvenegas Va por buen camino
esta es la funcion que necesito pero no la puedo llamar me da el siguiente error de compilacion al click de un boton

procedure Tform1.button1click(Sender: Tobjecty);
begin
findcomputer;
//findcomp;
//findcomputers;
end;

undeclaraded identifier 'findcomputer'

te agradeceria si me puedes ayudar

gracias
Responder Con Cita
  #5  
Antiguo 10-11-2008
hagalindo hagalindo is offline
Registrado
 
Registrado: ene 2008
Posts: 2
Poder: 0
hagalindo Va por buen camino
no funciona
Responder Con Cita
  #6  
Antiguo 16-12-2010
FENIXadr FENIXadr is offline
Miembro
 
Registrado: may 2010
Ubicación: Córdoba - Cba. - Argentina
Posts: 98
Poder: 8
FENIXadr Va por buen camino
si que funciona... y a la perfección... solo que hay que hacerle unos toquesitos al código.. a mi parecer está así a propósito para no dar las cosas tan servidas, porque copiar y pegar hace que solucionemos nuestros problemas y nos olvidemos del trabajo del que lo hizo, de esta manera tenemos que meternos en el código, lo entendemos y valoramos el esfuerzo de quien lo realizó. es una de las filosofías del foro y me parece muy bien..
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


La franja horaria es GMT +2. Ahora son las 01:37:05.


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