COMO SABER EL IP DE MI COMPUTADORA

2,333 views
Skip to first unread message

Hector Colman

unread,
Aug 22, 2013, 3:06:47 PM8/22/13
to publice...@googlegroups.com
Hola a todos. quiero saber con que código obtengo el IP de mi computadora para realizar un auditoria de cada computadora que se conecta al servidor 

Fidel Charny

unread,
Aug 22, 2013, 3:35:33 PM8/22/13
to publice...@googlegroups.com
Yo utilizo esta función. Anoté la fuente como Luis María Guayán.

*!* Devuelve las direcciones IP
*!* Sintaxis: IPAddress()
*!* Valor devuelto: lcRetVal
*!* lcRetVal viene expresado como una cadena con el formato: 192.100.100.100, 192.100.100.101, ...
PROCEDURE IPAddress
  LOCAL lnCnt, lpWSAData, lpWSHostEnt, lpHostName, lcRetVal, lpHostIp_Addr, ;
    lpHostEnt_Addr, lnHostEnt_Lenght, lnHostEnt_AddrList
  *!* Instrucciones DECLARE DLL para manipular Windows Sockets
  DECLARE INTEGER WSAGetLastError IN WSock32.DLL
  DECLARE INTEGER WSAStartup IN WSock32.DLL INTEGER wVersionRequested , STRING @lpWSAData
  DECLARE INTEGER WSACleanup IN WSock32.DLL
  DECLARE INTEGER gethostname IN WSock32.DLL STRING @lpHostName, INTEGER iHostNameLenght
  DECLARE INTEGER gethostbyname IN WSock32.DLL STRING lpHostName
  DECLARE RtlMoveMemory IN Win32API STRING @lpDest, INTEGER nSource, INTEGER nBytes
  *!* Valores
  lcRetVal           = ''
  lpHostName         = SPACE(256)
  lnHostEnt_Addr     = 0
  lnHostEnt_Lenght   = 0
  lnHostEnt_AddrList = 0
  lnHostIp_Addr      = 0
  lpTempIp_Addr      = CHR(0)
  lpHostIp_Addr      = REPLICATE(CHR(0), 4)
  lpWSHostEnt        = REPLICATE(CHR(0), 4 +4 +2 +2 +4)
  lpWSAData          = REPLICATE(CHR(0), 2 +2 + ;
    WSADESCRIPTION_LEN +1 +WSASYS_STATUS_LEN +1 +2 +2 +4)
  *!* Iniciar Windows Sockets
  IF WSAStartup(WS_VERSION_REQD, @lpWSAData) =  0
    *!* Valores
    lnVersion    = StrToInt(SUBSTR(lpWSAData, 1, 2))
    lnMaxSockets = StrToInt(SUBSTR(lpWSAData, 391, 2))
    *!* Determinar si Windows Sockets responde
    IF gethostname(@lpHostName, 256) <> SOCKET_ERROR
      *!* Valores
      lpHostName = ALLTRIM(lpHostName)
      lnHostEnt_Addr = gethostbyname(lpHostName)
      *!* Determinar si Windows Sockets no dio error
      IF lnHostEnt_Addr <> 0
        *!* Mover bloques de memoria
        RtlMoveMemory(@lpWSHostEnt, lnHostEnt_Addr, 16)
        *!* Valores
        lnHostEnt_AddrList = StrToLong(SUBSTR(lpWSHostEnt, 13, 4))
        lnHostEnt_Lenght   = StrToInt(SUBSTR(lpWSHostEnt, 11, 2))
        *!* Obtener todas las direcciones IP de la máquina
        DO WHILE .T.
          *!* Mover bloques de memoria
          RtlMoveMemory(@lpHostIp_Addr, lnHostEnt_AddrList, 4)
          *!* Valores
          lnHostIp_Addr = StrToLong(lpHostIp_Addr)
          *!* No hay o no quedan más direcciones validas
          IF lnHostIp_Addr = 0
            EXIT
          ELSE
            *!* Separar multiples IP`s con comas
            lcRetVal = lcRetVal + IIF(EMPTY(lcRetVal), '', ',')
          ENDIF
          lpTempIp_Addr = REPLICATE(CHR(0), lnHostEnt_Lenght)
          *!* Mover bloques de memoria
          RtlMoveMemory(@lpTempIp_Addr, lnHostIp_Addr, lnHostEnt_Lenght)
          *!* Componer cadena IP con puntos
          FOR lnCnt = 1 TO lnHostEnt_Lenght
            lcRetVal = lcRetVal + TRANSFORM(ASC(SUBSTR(lpTempIp_Addr, lnCnt, 1))) + ;
              IIF(lnCnt = lnHostEnt_Lenght, '', '.')
          ENDFOR
          *!* Continuar con la siguiente direccion
          lnHostEnt_AddrList = lnHostEnt_AddrList + 4
        ENDDO
      ENDIF
    ENDIF
  ENDIF
  *!* Parar Windows Sockets
  IF WSACleanup() <> 0
    lcRetVal = ''
  ENDIF
  *!* Retorno
  RETURN lcRetVal
ENDPROC

Hector Colman

unread,
Aug 22, 2013, 3:48:17 PM8/22/13
to publice...@googlegroups.com
gracia man por colaborar...

Alfonso Arce Silvestre

unread,
Aug 22, 2013, 3:49:06 PM8/22/13
to Comunidad de Visual Foxpro en Español
Yo utilizo el NetScaner para una red local



2013/8/22 Hector Colman <hcolma...@gmail.com>

Hector Colman

unread,
Aug 22, 2013, 3:49:38 PM8/22/13
to publice...@googlegroups.com
Gracia man. 

El jueves, 22 de agosto de 2013 15:30:20 UTC-4, Jose Mario escribió:

Obtener IP Local

oWS = CREATEOBJECT ("MSWinsock.Winsock")

? oWS.LocalIP

? oWS.LocalHostName

José Enrique Llopis

unread,
Aug 23, 2013, 4:06:40 AM8/23/13
to publice...@googlegroups.com

Otra forma sencilla de averiguar todas las direcciones IP de una máquina

 

LOCAL loWMI, loAdapters, lcAddress

loWMI = GETOBJECT("winmgmts:")

loAdapters = loWMI.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=True")

 

FOR EACH loAdapter IN loAdapters

IF NOT ISNULL(loAdapter.ipaddress)

FOR EACH lcAddress IN loAdapter.ipaddress

? lcAddress

NEXT

ENDIF

NEXT

 

 


wpalomo

unread,
Aug 23, 2013, 10:46:29 AM8/23/13
to publice...@googlegroups.com
Saludos

Este codigo es mas simple, retorna IP del equipo es uso.

? DisplayIP()

FUNCTION DisplayIP
LOCAL lowsock, lcip
  lowsock = CREATEOBJECTEX("{248DD896-BB45-11CF-9ABC-0080C7E7B78D}", "", "")
  lcip = lowsock.LocalIP
  RETURN (lcip)
ENDFUNC

Suerte

Daniel Sánchez

unread,
Aug 25, 2013, 2:05:54 AM8/25/13
to Comunidad de Visual Foxpro en Español
Si te sirve puedes usar esta función de vfp que te devuelve el nombre de la pc y el usuario 

? ID()
--
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil +051-949398047
Trujillo - Perú

Jairo Miranda

unread,
Aug 25, 2013, 10:20:07 PM8/25/13
to publice...@googlegroups.com

En la ventana del DOS

Ipconfig

 

JM

HernanCano

unread,
Aug 27, 2013, 1:53:56 PM8/27/13
to publice...@googlegroups.com
Varias soluciones.
 
GetIP.txt

Jose Mario

unread,
Aug 22, 2013, 3:30:20 PM8/22/13
to publice...@googlegroups.com

Obtener IP Local

oWS = CREATEOBJECT ("MSWinsock.Winsock")

? oWS.LocalIP

? oWS.LocalHostName


El jueves, 22 de agosto de 2013 13:06:47 UTC-6, Hector Colman escribió:

Rodribezul

unread,
Jul 13, 2017, 2:14:57 PM7/13/17
to Comunidad de Visual Foxpro en Español
Un favor por que me marcara error o comando no valido en esta línea CREATEOBJECTEX("{248DD896-BB45-11CF-9ABC-0080C7E7B78D}", "", "")

Gracias

Dsanchez

unread,
Jul 13, 2017, 2:35:59 PM7/13/17
to publice...@googlegroups.com
Es mas facil con WinSock no me da problema en ningun de estos windows xp/7/8/10
antes tenes que registrar tu mswinsck.dll como administrador
Si al ejecutar la siguiente linea te marca error de Licencia

LOCAL oSock as Object
oSock = CREATEOBJECT("MSWinsock.Winsock.1")
m.vsIP =  oSock.LocalIP
osock = null

Ejecuta este archivo.  Registro.reg    dentro de este copia lo siguiente:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Licenses\2c49f800-c2dd-11cf-9ad6-0080c7e7b78d]
@ = "mlrljgrlhltlngjlthrligklpkrhllglqlrk"

Fuente el Foro y Victor Esp

Slds

Dsanchez

Rodribezul

unread,
Jul 13, 2017, 9:35:41 PM7/13/17
to Comunidad de Visual Foxpro en Español
gracias

Miguel Angel Cabezas Castillo

unread,
Feb 1, 2018, 10:48:52 AM2/1/18
to Comunidad de Visual Foxpro en Español
NO RECOMIENDO EL MSWinsock.Winsock, POR QUE EN MUCHAS MAQUINAS NO LA RECONOCE Y GENERA UN MENSAJE DE ERROR.
Y LAMENTABLEMENTE AUN EXISTEN MUCHOS USUARIOS QUE MANTIENEN MAQUINAS Y SISTEMAS OPERATIVOS ANTIGUOS, 
INCLUYENDO SERVERS.
SALUDOS.

El jueves, 13 de julio de 2017, 13:35:59 (UTC-5), DSánchez escribió:

ZeRoberto

unread,
Feb 1, 2018, 12:21:11 PM2/1/18
to publicesvfoxpro
Esto no se de donde lo descargue

*/--- Devuelve las direcciones IP
*/--- Sintaxis: IPAddress()
*/--- Valor devuelto: lcResult
*/--- lcResult viene expresado como una cadena con el formato: 192.100.100.100, 192.100.100.101, ...
FUNCTION IPAddress
Local lnCnt, lpWSAData, lpWSHostEnt, lpHostName, lcResult, lpHostIp_Addr, ;
     lpHostEnt_Addr, lnHostEnt_Lenght, lnHostEnt_AddrList

    */--- Windows Sockets
    #DEFINE WS_VERSION_REQD     257
    #DEFINE WS_VERSION_MAJOR      1
    #DEFINE WS_VERSION_MINOR      1
    #DEFINE MIN_SOCKETS_REQD      1
    #DEFINE SOCKET_ERROR         -1
    #DEFINE WSADESCRIPTION_LEN  256
    #DEFINE WSASYS_STATUS_LEN   128
     
    */--- Instrucciones DECLARE DLL para manipular Windows Sockets
    Declare Integer WSAGetLastError In WSock32.Dll
    Declare Integer WSAStartup In WSock32.Dll Integer wVersionRequested , String @lpWSAData
    Declare Integer WSACleanup In WSock32.Dll
    Declare Integer gethostname In WSock32.Dll String @lpHostName, Integer iHostNameLenght
    Declare Integer gethostbyname In WSock32.Dll String lpHostName
    Declare RtlMoveMemory In Win32API String @lpDest, Integer nSource, Integer nBytes
    */--- Valores
    lcResult           = ''
    lpHostName         = Space(256)
    lnHostEnt_Addr     = 0
    lnHostEnt_Lenght   = 0
    lnHostEnt_AddrList = 0
    lnHostIp_Addr      = 0
    lpTempIp_Addr      = Chr(0)
    lpHostIp_Addr      = Replicate(Chr(0), 4)
    lpWSHostEnt        = Replicate(Chr(0), 4 + 4 + 2 + 2 + 4)
    lpWSAData          = Replicate(Chr(0), 2 + 2 + WSADESCRIPTION_LEN + 1 + WSASYS_STATUS_LEN + 1 + 2 + 2 + 4)
    */--- Iniciar Windows Sockets
    If WSAStartup(WS_VERSION_REQD, @lpWSAData) =  0
       */--- Valores
       *lnVersion    = CToBin(Substr(lpWSAData, 1, 2), "2RS")
       *lnMaxSockets = CToBin(Substr(lpWSAData, 391, 2), "2RS")
       */--- Determinar si Windows Sockets responde
       If gethostname(@lpHostName, 256) <> SOCKET_ERROR
          */--- Valores
          lpHostName = Alltrim(lpHostName)
          lnHostEnt_Addr = gethostbyname(lpHostName)
          */--- Determinar si Windows Sockets no dio error
          If lnHostEnt_Addr <> 0
             */--- Mover bloques de memoria
             RtlMoveMemory(@lpWSHostEnt, lnHostEnt_Addr, 16)
             */--- Valores
             *lnHostEnt_AddrList = StrToLong(Substr(lpWSHostEnt, 13, 4))
             *lnHostEnt_Lenght   = StrToInt(Substr(lpWSHostEnt, 11, 2))
             lnHostEnt_AddrList = CToBin(Substr(lpWSHostEnt, 13, 4), "4RS")
             lnHostEnt_Lenght   = CToBin(Substr(lpWSHostEnt, 11, 2), "2RS")
             
             */--- Obtener todas las direcciones IP de la máquina
             Do While .T.
                */--- Mover bloques de memoria
                RtlMoveMemory(@lpHostIp_Addr, lnHostEnt_AddrList, 4)
                */--- Valores
                *lnHostIp_Addr = StrToLong(lpHostIp_Addr)
                lnHostIp_Addr = CToBin(lpHostIp_Addr, "4RS")
                */--- No hay o no quedan más direcciones validas
                If lnHostIp_Addr = 0
                   Exit
                 Else
                   */--- Separar multiples IP`s con comas
                   lcResult = lcResult + Iif(Empty(lcResult), '', ',')
                 EndIf
                 lpTempIp_Addr = Replicate(Chr(0), lnHostEnt_Lenght)
                 */--- Mover bloques de memoria
                 RtlMoveMemory(@lpTempIp_Addr, lnHostIp_Addr, lnHostEnt_Lenght)
                 */--- Componer cadena IP con puntos
                 For lnCnt = 1 To lnHostEnt_Lenght
                     lcResult = lcResult + Transform(Asc(Substr(lpTempIp_Addr, lnCnt, 1))) + ;
                                Iif(lnCnt = lnHostEnt_Lenght, '', '.')
                 EndFor
                 */--- Continuar con la siguiente direccion
                 lnHostEnt_AddrList = lnHostEnt_AddrList + 4
             EndDo
             */--- Obtener solo el primer IP de la lista
             lcResult = GetWordNum(lcResult, 1, ",")
          EndIf
       EndIf
    EndIf
    */--- Parar Windows Sockets
    If WSACleanup() <> 0
       lcResult = ''
    EndIf
    */--- Retorno
    Return lcResult
EndFunc

Jorge Galván Pérez

unread,
Feb 1, 2018, 2:05:35 PM2/1/18
to Comunidad de Visual Foxpro en Español
*!* *? DisplayIP()

FUNCTION DisplayIP
LOCAL loWMI, loAdapters, lcAddress, lcLinea

loWMI = GETOBJECT("winmgmts:")

loAdapters = loWMI.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=True")
CLEAR
 
lcLinea = ""

FOR EACH loAdapter IN loAdapters
lcLinea = lcLinea+"-----------------------------------"+CHR(13)
lcLinea = lcLinea+PADr("HostName     : "+loAdapter.DNSHostName, 60, " ")+CHR(13)
lcLinea = lcLinea+PADr("Adaptador    : "+loAdapter.Description, 60, " ")+CHR(13)
lcLinea = lcLinea+PADr("Dirección Mac: "+loAdapter.MACAddress,  60, " ")+CHR(13)
lcLinea = lcLinea+"Dirección Ip  : "
IF NOT ISNULL(loAdapter.ipaddress)

FOR EACH lcAddress IN loAdapter.ipaddress

lcLinea = lcLinea+lcAddress +CHR(13)
 
NEXT

ENDIF

NEXT

*MESSAGEBOX(lcLinea )

return(lcLinea )
ENDFUNC

Jorge Galván
Caracas-Venezuela 
Reply all
Reply to author
Forward
0 new messages