Autor Tema: Geolocalizar con VB6  (Leído 7315 veces)

0 Usuarios y 1 Visitante están viendo este tema.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Geolocalizar con VB6
« en: Agosto 19, 2015, 03:37:07 pm »
 Quiero tener el nombre del pais en donde se ejecuta el aplicativo, esto con VB6.
La solución que me parece podría ser:
1.- Obtener la ip publica (aun no encuentro un método adecuado pero veo que seria usando una web de esas que sacan cualesmiIp, recorrerla y sacar el ip, ¿no habra una api? seguire buscando)
2.- Comparar con un diccionario la ip para saber a que pais corresponde, ese diccionario lo tendría en mi Bd.
3.- Mostrar el pais.

¿Sabrán de una mejor forma?

Gracias
Me encuentras en YAcosta.com

Albertomi

  • Gigabyte
  • ****
  • Mensajes: 281
  • Reputación: +153/-0
    • Ver Perfil
Re:Geolocalizar con VB6
« Respuesta #1 en: Agosto 19, 2015, 04:05:57 pm »

Estimado YAcosta


Aquí algunos ejemplos de cómo invocar unos servicios web, para que te retorne valores reales necesitas de una cuenta.



http://api.hostip.info/country.php
  US


http://api.hostip.info/get_html.php?ip=12.215.42.19
  Country: UNITED STATES (US)
  City: Sugar Grove, IL
   IP: 12.215.42.19


http://api.hostip.info/get_html.php?ip=12.215.42.19&position=true
  Country: UNITED STATES (US)
  City: Sugar Grove, IL
  Latitude: 41.7696
  Longitude: -88.4588
   IP: 12.215.42.19


http://api.hostip.info/get_json.php
  {"country_name":"UNITED STATES","country_code":"US","city":"Sugar Grove, IL","ip":"12.215.42.19"}


http://api.hostip.info/?ip=12.215.42.19
  [use the URL above for an example - XML too long to paste below]


Saludos desde algún lugar de Lima-Perú
Saludos, desde algún lugar de Lima-Perú

aedEric

  • Megabyte
  • ***
  • Mensajes: 211
  • Reputación: +20/-0
    • Ver Perfil
Re:Geolocalizar con VB6
« Respuesta #2 en: Agosto 19, 2015, 04:10:41 pm »
hola saludos a los dos muy buena albertomi  amigo Yvan y por que no tomas el pais de la configuracion regional de windows aunque seda el caso que luego suele estar mal es muy raro saludos

Código: (VB) [Seleccionar]
Option Explicit
Private Declare Function GetUserDefaultLCID Lib "kernel32" () As Long

Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" ( _
                                       ByVal Locale As Long, _
                                       ByVal LCType As Long, _
                                       ByVal lpLCData As String, _
                                       ByVal cchData As Long) As Long
Private Const LOCALE_SCOUNTRY As Long = &H6
Private Function Obtener_Simbolo(Valor As Long) As String

    Dim Simbolo As String

    Dim r1 As Long
    Dim r2 As Long
    Dim p As Integer
    Dim Locale As Long

    Locale = GetUserDefaultLCID()
    r1 = GetLocaleInfo(Locale, Valor, vbNullString, 0)
    Simbolo = String$(r1, 0)
    r2 = GetLocaleInfo(Locale, Valor, Simbolo, r1)
    p = InStr(Simbolo, Chr$(0))

    If p > 0 Then
        Obtener_Simbolo = Left$(Simbolo, p - 1)
    End If

End Function

Private Sub Form_Load()

    MsgBox Obtener_Simbolo(LOCALE_SCOUNTRY), 64, " El país "

End Sub



No he fracasado. He encontrado 10000 soluciones que no funcionan.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Geolocalizar con VB6
« Respuesta #3 en: Agosto 19, 2015, 05:31:50 pm »
Albertomi.
Gracias por la respuesta, es muy interesante aunque tendría que investigar como usar tu metodo, no soy muy ducho en ello.

aedEric
Tu método me queda bastante practico ademas de que el código esta servido, puede haber un rango de fallo en determinar el pais por lo que comentas pero creo que debe ser un porcentaje de población muy bajo que vale la pena usar este método.
Me encuentras en YAcosta.com

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Geolocalizar con VB6
« Respuesta #4 en: Agosto 19, 2015, 05:49:43 pm »
Const LOCALE_USER_DEFAULT = &H400
Const LOCALE_SENGCOUNTRY = &H1002 ' English name of country
Const LOCALE_SENGLANGUAGE = &H1001  ' English name of language
Const LOCALE_SNATIVELANGNAME = &H4  ' native name of language
Const LOCALE_SNATIVECTRYNAME = &H8  ' native name of country
Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
Private Sub Form_Load()
    'KPD-Team 2001
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    MsgBox "You live in " & GetInfo(LOCALE_SENGCOUNTRY) & " (" & GetInfo(LOCALE_SNATIVECTRYNAME) & ")," & vbCrLf & "and you speak " & GetInfo(LOCALE_SENGLANGUAGE) & " (" & GetInfo(LOCALE_SNATIVELANGNAME) & ").", vbInformation
End Sub
Public Function GetInfo(ByVal lInfo As Long) As String
    Dim Buffer As String, Ret As String
    Buffer = String$(256, 0)
    Ret = GetLocaleInfo(LOCALE_USER_DEFAULT, lInfo, Buffer, Len(Buffer))
    If Ret > 0 Then
        GetInfo = Left$(Buffer, Ret - 1)
    Else
        GetInfo = ""
    End If
End Function
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Geolocalizar con VB6
« Respuesta #5 en: Agosto 19, 2015, 06:30:29 pm »
Option Explicit
' Add Microsoft Internet Transfer Control

Dim pubIPA As String, pos1 As Long, pos2 As Long, str As String
     
Private Sub Form_Load()
    str = Inet1.OpenURL("http://api.hostip.info/get_html.php?ip=", icString)
   
    'pos1 = InStr(str, "var ip =")
    'pos1 = InStr(pos1 + 1, str, "'", vbTextCompare) + 1
    'pos2 = InStr(pos1 + 1, str, "'", vbTextCompare)
    'pubIPA = Mid$(str, pos1, pos2 - pos1)
    'MsgBox pubIPA, vbInformation
    MsgBox str
    Unload Me
   
End Sub

Este funciona mejor creo me devuelve mi ip real de internet pero no se por que no me reconoces el nombre de mi pais
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

Albertomi

  • Gigabyte
  • ****
  • Mensajes: 281
  • Reputación: +153/-0
    • Ver Perfil
Re:Geolocalizar con VB6
« Respuesta #6 en: Agosto 19, 2015, 09:05:10 pm »
Estimado YAcosta

En esta URL se dispone de una IP un poco más limpia
http://www.une.com.co/miip/
 
Por otro lado, si dispones de un servidor y para que no tengas dependencia de servicios de terceros lo mejor es que implementes tu propio servicio  de CUAL ES MI IP. Aquí te dejo el código fuente tanto en ASP como en PHP 5 que como veras es sumamente simple y de mucha utilidad.
 
En ASP
<%= Request.ServerVariables("REMOTE_ADDR")  %>
 
En PHP5
<?
echo $_SERVER["REMOTE_ADDR"];
?>


Saludos desde algún lugar de Lima - Perú
Saludos, desde algún lugar de Lima-Perú

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Geolocalizar con VB6
« Respuesta #7 en: Agosto 20, 2015, 12:35:11 pm »
Es lo primero que se me vino a la mente cuando te lei "esta url tiene un IP mas limpia" y efectivamente mejor la alojo en mi host sin depender de nadie.

Aunque ya lo tengo resuelto igual me gustaria mucho saber como hacerlo consultando la ip, voy a crear la pagina, y luego vere como leer esa pagina sin cargarla desde vb6... ese detallito no lo resuelvo.
Me encuentras en YAcosta.com

Albertomi

  • Gigabyte
  • ****
  • Mensajes: 281
  • Reputación: +153/-0
    • Ver Perfil
Re:Geolocalizar con VB6
« Respuesta #8 en: Agosto 23, 2015, 01:36:20 am »
Estimado YAcosta


En esta URL puedes encontrar los distintos rangos de IP asignado a cada país, lo pasas a base de datos y con ello puedes armar tu propio servicio de localización por IP publica


http://www.nirsoft.net/countryip/


Saludos desde algún lugar de Lima-Perú
Saludos, desde algún lugar de Lima-Perú