Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-10-2006
yorki yorki is offline
Registrado
 
Registrado: oct 2006
Posts: 4
Poder: 0
yorki Va por buen camino
Smile Dir IP, Mask y Gateway

Hola soy nuevo en el foro y estoy buscando ayuda respecto a como obtener la configuracion IP de mi PC en variables String por separado.
Si, he buscado en el foro, pero solo puedo llegar a la dir IP, pero necesito ademas la mascara y el gateway. Esto es para hacer una pequeña aplicacion que cambie la configuracion IP de la PC y que el usuario mediante un boton pueda saber que configuración tiene en un momento determinado.
Gracias

yorki
Responder Con Cita
  #2  
Antiguo 12-10-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Por ahora te dejo un ejemplo de como obtener la ip, la mascara, la MAC y la descripción del interface. La Gateway te la dejo a ti:

Es una aplicación de consola:
Código Delphi [-]
program ipview;

{$APPTYPE CONSOLE}

uses Windows, SysUtils;

const
  MAX_INTERFACE_NAME_LEN = 256;
  MAXLEN_PHYSADDR = 8;
  MAXLEN_IFDESCR = 256;

type
  PMIB_IPADDRROW = ^TMIB_IPADDRROW;
  TMIB_IPADDRROW = packed record
    dwAddr: DWORD;
    dwIndex: DWORD;
    dwMask: DWORD;
    dwBCastAddr: DWORD;
    dwReasmSize: DWORD;
    unused1: SmallInt;
    wType: SmallInt;
  end;

  PMIB_IPADDRTABLE = ^TMIB_IPADDRTABLE;
  TMIB_IPADDRTABLE = record
    dwNumEntries: DWORD;
    table: array[0..0] of TMIB_IPADDRROW;
  end;

  PMIB_IFROW = ^TMIB_IFROW;
  TMIB_IFROW  = record
    wszName: array[1..MAX_INTERFACE_NAME_LEN] of WCHAR;
    dwIndex: DWORD;
    dwType: DWORD;
    dwMtu: DWORD;
    dwSpeed: DWORD;
    dwPhysAddrLen: DWORD;
    bPhysAddr: array[1..MAXLEN_PHYSADDR] of Byte;
    dwAdminStatus: DWORD;
    dwOperStatus: DWORD;
    dwLastChange: DWORD;
    dwInOctets: DWORD;
    dwInUcastPkts: DWORD;
    dwInNUcastPkts: DWORD;
    dwInDiscards: DWORD;
    dwInErrors: DWORD;
    dwInUnknownProtos: DWORD;
    dwOutOctets: DWORD;
    dwOutUcastPkts: DWORD;
    dwOutNUcastPkts: DWORD;
    dwOutDiscards: DWORD;
    dwOutErrors: DWORD;
    dwOutQLen: DWORD;
    dwDescrLen: DWORD;
    bDescr: array[1..MAXLEN_IFDESCR] of Byte;
  end;

function GetIpAddrTable(IpAddrTable: PMIB_IPADDRTABLE; pdwSize: PULONG;
  Order: BOOL): DWORD; stdcall; external 'iphlpapi.dll' name 'GetIpAddrTable';

function GetIfEntry(pIfRow: PMIB_IFROW): DWORD;
  stdcall; external 'iphlpapi.dll' name 'GetIfEntry';

function IpToStr(Ip: DWORD): string;
begin
  Result:= Format('%d.%d.%d.%d',
      [IP and $FF,(IP shr 8) and $FF,(IP shr 16) and $FF,(IP shr 24) and $FF]);
end;

function PhysAddrToStr(PhysAddr: PByte; Len: DWORD): string;
begin
  Result:= EmptyStr;
  while Len > 0  do
  begin
    Result:= Result + IntToHex(PhysAddr^,2);
    inc(PhysAddr);
    dec(Len);
  end;
end;

procedure Ejemplo;
var
  IfRow: TMIB_IFROW;
  Table: PMIB_IPADDRTABLE;
  Size: DWORD;
  i: Integer;
begin
  GetMem(Table, Sizeof(TMIB_IPADDRTABLE));
  try
    Size:= Sizeof(TMIB_IPADDRTABLE);
    if GetIpAddrTable(Table, @Size,  FALSE) =  ERROR_INSUFFICIENT_BUFFER then
    begin
      FreeMem(Table);
      GetMem(Table,Size);
    end;
    FillChar(Table^,Size,0);
    if GetIpAddrTable(Table, @Size,  FALSE) =  NO_ERROR then
    begin
      for i:= 0 to Table.dwNumEntries - 1 do
      begin
        FillChar(IfRow,Sizeof(IfRow),0);
        IfRow.dwIndex:= Table.table[i].dwIndex;
        if GetIfEntry(@IfRow) =  NO_ERROR then
          with IfRow do
          begin
            Writeln('Descripcion: ' + Copy(String(PChar(@bDescr)),1,dwDescrLen));
            Writeln('Physical address: ' + PhysAddrToStr(@bPhysAddr,dwPhysAddrLen));
          end;
        with Table.table[i] do
        begin
          Writeln('Address: ' + IpToStr(dwAddr));
          Writeln('Mask: ' + IpToStr(dwMask));
          Writeln;
        end;
      end;
    end;
  finally
    FreeMem(Table);
  end;
end;

begin
  Ejemplo;
  Writeln('Pulsa una  para terminar ...');
  Readln;
end.

Última edición por seoane fecha: 12-10-2006 a las 02:02:11.
Responder Con Cita
  #3  
Antiguo 12-10-2006
yorki yorki is offline
Registrado
 
Registrado: oct 2006
Posts: 4
Poder: 0
yorki Va por buen camino
Thumbs up Configuración IP

Bueno primero que nada muchas gracias a seoane por su ayuda.
Ahora, ya se que corro el riesgo de que nadie mas me responda o me tire un cabo como decimos los cubanos, pero recien empiezo a dar mis primeros pasos en delphi y si no es molestia me gustaria ver si podian darme un norte de como funciona la aplicación, que de echo la probe y me cuadró bastante, aunque la necesitaria hacer en una ventana de windows, pero quisiera saber un poco al respecto. Si tuvieran algun enlace o pdf, o cualquier documentacion con la cual romperme los sesos y poder adentrarme mas en este mundo, sobre todo en lo que respecta a hacer cosas como estas de la Configuracion IP, es decir cosas con el sistema operativo. He oido que esto es mediante las API, pero estoy en pañales.
Saludos
yorki
Responder Con Cita
  #4  
Antiguo 12-10-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Veo que no te asusta leer, eso esta bien, mucha gente quiere que le den todo hecho. Lamentablemente la mayoría de información sobre el tema esta en C, y si no estas familiarizado con este lenguaje y con delphi, puede resultarte complicado traducir las funciones y estructuras. De todas formas aquí te dejo algo para leer, es la pagina de microsoft sobre la API iphelper, que es la que se encarga de manejar todo esto.

http://msdn.microsoft.com/library/de...start_page.asp

Echale un vistazo, y para cualquier duda aquí estamos
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
Otra del Quickreport TQRDBtext Mask Carlos Arevalo Impresión 3 11-04-2006 19:59:13
FileListBox propiedad Mask=AM2*.dat me trae otros archivos? RER Varios 0 02-08-2005 00:14:25
Edit Mask??????? seken Varios 1 21-05-2005 17:36:59
Crear un mask Edit, y validar el Campo !! jmedina Conexión con bases de datos 3 13-05-2005 08:04:23
Másk con Ñ scooterjgm OOP 0 29-09-2004 11:22:19


La franja horaria es GMT +2. Ahora son las 18:22:20.


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