¡Hola! Pues estuve buscando un poco, y como sólamente encontré un ejemplo que me podía servir,
que por cierto, no funcionó por que no tenía unos componentes que sabe dios dónde se consiguen,
vengo a preguntarles acerca del siguiente caso:
Tengo un programa, que "obtiene" varios IPs, entonces, quiero que cada vez que él detecte uno,
saque una banderita del país perteneciente.. pero no sé cómo lograr ésto. Manejo la API del Winsock,
por que el componente de éste es un asco xD
¿Alguien tiene alguna idea? Por cierto, el lugar donde se cargue la imagen de la banderita, es en un TreeView.
Espero que me puedan ayudar, ¡Saludos! :)
podes sacar la ip con algo como
http://www.geoiptool.com/
Ahmm, creo que no me expliqué muy bien, amigo, perdona D:
Pues enrealidad, sacar la IP no es un problema, por que es un troyano xD
Lo que pasa, es que no sé cómo sacar rangos entre IPs para determinar
el país a donde pertenece una, y así, determinarle una imagen de una
banderita a cada uno xD
Saludos :)
Aca tenes lo de las banderas, incluyendo las banderas en gif, los rangos, etc
http://foro.elhacker.net/php/super_contador_de_visitas_en_php300mb_sql4_millones_de_registrosscripts-t315327.0.html
yo escribi mal.
Es facil, pones la ip en la pag y la localiza.
Pero porque no usas el idioma del teclado, o el del windows?
o el de google?
Cada pais posee un rango de IP, este rango solo se puede comparar en una base de datos. ACA (http://www.recursosvisualbasic.com.ar/htm/utilidades-codigo-fuente/ip-finder.htm) te dejo algo que te puede dar una mano.
PD: Armate de paciencia.
Saludos
Hola mira estas dos funciones
Option Explicit
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_USER_DEFAULT As Long = &H400
Private Const LOCALE_SENGCOUNTRY As Long = &H1002
Private Const LOCALE_SENGLANGUAGE As Long = &H1001
Private Const LOCALE_SNATIVELANGNAME As Long = &H4
Private Const LOCALE_SNATIVECTRYNAME As Long = &H8
Private Const LOCALE_SISO3166CTRYNAME As Long = &H5A
Public Function GetCountryCode() As String
Dim sBuffer As String * 100
GetLocaleInfo LOCALE_USER_DEFAULT, LOCALE_SISO3166CTRYNAME, sBuffer, 10
GetCountryCode = Left$(sBuffer, InStr(sBuffer, Chr$(0)) - 1)
End Function
Public Function GetCountry() As String
Dim sBuffer As String * 100
If GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SENGCOUNTRY, sBuffer, 100) Then
GetCountry = Left$(sBuffer, InStr(sBuffer, Chr$(0)) - 1)
End If
End Function
Private Sub Form_Load()
MsgBox GetCountryCode & vbCrLf & GetCountry
End Sub
fijate que la funcion GetCountryCode retorna una abreviatura del paiz, que es recogida de la configuración local, entonces tenes que conseguirte las imagenes banderas con sus respectivos nombres y luego segun el caso mostras tal bandera.
Saludos.
Lo vi y me interese ;D ;D jejeje asique he hecho algo en base a codigos de LeandroA para quien le sirva ahi vá.
https://rapidshare.com/files/2759427725/BanderaSegunPais.rar (https://rapidshare.com/files/2759427725/BanderaSegunPais.rar)
Wow, muchas gracias a todos por sus comentarios :)
Bien, creo que ya tengo bastante para continuar mi proyecto,
ya que todos me ayudaron bastante.
Leandro, acabas de dar un aporte buenísimo, que yo considero
que deberían de poner talvez en tutoriales, adjuntándole el
ejemplo que nos facilitó Noele1995.
Ahmm.. duda resulta, ya pueden cerrar el tema para que no
hagan spam, etc, etc, etc.
¡Saludos y gracias!
Cita de: LeandroA en 10 Mayo 2012, 02:49 AM
Hola mira estas dos funciones
Option Explicit
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_USER_DEFAULT As Long = &H400
Private Const LOCALE_SENGCOUNTRY As Long = &H1002
Private Const LOCALE_SENGLANGUAGE As Long = &H1001
Private Const LOCALE_SNATIVELANGNAME As Long = &H4
Private Const LOCALE_SNATIVECTRYNAME As Long = &H8
Private Const LOCALE_SISO3166CTRYNAME As Long = &H5A
Public Function GetCountryCode() As String
Dim sBuffer As String * 100
GetLocaleInfo LOCALE_USER_DEFAULT, LOCALE_SISO3166CTRYNAME, sBuffer, 10
GetCountryCode = Left$(sBuffer, InStr(sBuffer, Chr$(0)) - 1)
End Function
Public Function GetCountry() As String
Dim sBuffer As String * 100
If GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SENGCOUNTRY, sBuffer, 100) Then
GetCountry = Left$(sBuffer, InStr(sBuffer, Chr$(0)) - 1)
End If
End Function
Private Sub Form_Load()
MsgBox GetCountryCode & vbCrLf & GetCountry
End Sub
fijate que la funcion GetCountryCode retorna una abreviatura del paiz, que es recogida de la configuración local, entonces tenes que conseguirte las imagenes banderas con sus respectivos nombres y luego segun el caso mostras tal bandera.
Saludos.
Con esté código se puede dar que el usuario tenga el windows en 1 idioma o seteado con X país y sin embargo realmente estar en otro país, en mi caso te aparecería que soy de Argentina, pero soy de Uruguay.
Yo ya intenté hacer esto hace rato y si, terminé usando el mismo código porque no me dió la paciencia, pero se puede conseguir una lista de rangos de ip's y en base a eso armar tu propia base de datos con rangos de países conocidos, y bueno, para los rangos desconocidos si usar el código de Leandro.