Imagen conforme a una IP

Iniciado por VampireLord, 8 Mayo 2012, 00:40 AM

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

VampireLord

¡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! :)

Elemental Code


I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

VampireLord

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 :)

Graphixx

Nada tiene fin solo hay pequeñas pausas, pausas que determinan el comienzo de otros. Graphixx
Mi blog

Elemental Code

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?

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

Deeo Raiser

#5
Cada pais posee un rango de IP, este rango solo se puede comparar en una base de datos. ACA te dejo algo que te puede dar una mano.

PD: Armate de paciencia.

Saludos



"Recuerda siempre que tu propia  resolución de triunfar es mas importante que cualquier otra cosa."
Abraham Lincoln

LeandroA

Hola mira estas dos funciones
Código (vb) [Seleccionar]

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.

noele1995

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

VampireLord

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!

extreme69

Cita de: LeandroA en 10 Mayo 2012, 02:49 AM
Hola mira estas dos funciones
Código (vb) [Seleccionar]

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.