Bueno vi foro/viewtopic.php?f=12&t=21723 y me dio una idea que desarrolle hace un momento y espero que les pueda servir a todos ustedes para cualquier cosa... Es una función bastante simple que lo que hace es obtener información de una IP determinada obteniendo los datos de un servidor remoto. Saludos y espero que les sirva a algun@.

PD: Pueden cambiar el idioma de el valor que retorna.
PD1: Devuelve la dirección de la Bandera en .ICO por lo que pueden modificarla y hacer que descargue la imagen y la ponga en un picturebox

Código: Seleccionar todo

Option Explicit

'*********************************************************************************************************************
'* Función           : mGEOTools                                                                                      *
'* Fecha             : 15/05/2010 : 11:020                                                                            *
'* Autor             : Skyweb07 * [email protected]                                                                 *
'* Referencias       : http://geotool.servehttp.com/                                                                  *
'* Próposito         : Obtener información de una IP determinada, obteniendo los datos de un servidor remoto          *
'* Comentarios       : Si a los de la página web se les ocurre cambiar su código pues habria que cambiar el code      *
'* Modo de uso       : msgbox Initialize.Pais                                                                     *
'**********************************************************************************************************************

Private Declare Function InternetOpen Lib "wininet" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal lpszUrl As String, ByVal lpszHeaders As String, ByVal dwHeadersLength As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Private Declare Function InternetReadFile Lib "wininet" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetCloseHandle Lib "wininet" (ByVal hInet As Long) As Integer
 
Private Const INTERNET_OPEN_TYPE_DIRECT As Long = 1
Private Const INTERNET_FLAG_RELOAD      As Long = &H80000000

Private Const GEOTOOLWEB As String = "http://geotool.servehttp.com/?lang=[IDIOMA]&ip="

Type IPTOOL
    Servidor        As String
    Continente      As String
    Pais            As String
    Region          As String
    Ciudad          As String
    IP              As String
    ISP             As String
    Bandera         As String
    HoraLocal       As String
    Latitud         As String
    Longitud        As String
End Type
 
Enum Idioma
    [ES] = 0
    [EN] = 1
    [FR] = 2
    [IT] = 3
    [ES-ARG] = 4
    [PT] = 5
End Enum
 
Public Function Initialize(Optional ByVal vIP As String, Optional ByVal vIdioma As Idioma = 0) As IPTOOL
    
    Dim IP      As IPTOOL
    Dim vData   As String
    
    vData = GET_(Replace$(GEOTOOLWEB, "[IDIOMA]", Idioma(vIdioma)) & vIP)
    
    With IP
        .Servidor = Back(Textbetween(vData, "<!-- Hostname {{{2 -->", "</b></a>"), ">")
        .Continente = Back(Textbetween(vData, "<!-- Countinent {{{2 -->", "</b></a>"), ">")
        .Pais = Back(Textbetween(vData, "<!-- Country {{{2 -->", "</b></a>"), ">")
        .Region = Trim_(Mid$(Textbetween(Back(Textbetween(vData, "<!-- Region {{{2 -->", "<!-- Localtime {{{2 -->"), "left"), "eft", "</td>"), 5, 100))
        .Ciudad = Trim_(Mid$(Textbetween(Back(Textbetween(vData, "<!-- City {{{2 -->", "<!-- Latitude {{{2 -->"), "left"), "eft", "</td>"), 5, 100))
        .IP = Back(Textbetween(vData, "!-- IP Address {{{2 -->", "</b></a>"), ">")
        .ISP = Trim_(Mid$(Textbetween(Back(Textbetween(vData, "<!-- ISP {{{2 -->", "<!-- Countinent {{{2 -->"), "left"), ">", "</td>"), 5, 100))
        .Bandera = Textbetween(vData, "favicon.change(" & Chr$(34), Chr$(34))
        .HoraLocal = Back(Textbetween(vData, "localtime", "</span>"), ">")
        .Latitud = Trim_(Mid$(Textbetween(Back(Textbetween(vData, "<!-- Latitude {{{2 -->", "<!-- IP Address {{{2 -->"), "left"), "eft", "</td>"), 5, 100))
        .Longitud = Trim_(Mid$(Textbetween(Back(Textbetween(vData, "<!-- Longitude {{{2 -->", "<!-- IP Address prompt and form {{{2 -->"), "left"), "eft", "</td>"), 5, 100))
    End With
    
    Initialize = IP

End Function
 
Private Function GET_(ByVal hURL As String, Optional ByVal hUserAgent As String = "[$KYW€B PRODUCTION$]") As String
    
    Dim hInternet As Long
    Dim hOpenurl  As Long
    Dim hBuffer As String * 1024
    Dim hComplete As String
    Dim hReturn As Long
    
    hInternet = InternetOpen(hUserAgent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
    
    If hInternet <> 0 Then
        
        hOpenurl = InternetOpenUrl(hInternet, hURL, vbNullString, ByVal 0&, INTERNET_FLAG_RELOAD, ByVal 0&)
        
        If hOpenurl <> 0 Then
            
            Do
                
                InternetReadFile hOpenurl, hBuffer, 1024, hReturn
                
                hComplete = hComplete & Left$(hBuffer, hReturn)
                
                If hReturn = 0 Then Exit Do
                
                DoEvents
                
            Loop
            
                GET_ = hComplete
                
        End If
        
    End If
    
    InternetCloseHandle hInternet
    InternetCloseHandle hOpenurl
    
End Function

Private Function Idioma(ByVal vIndex As Long) As String
    Select Case vIndex
        Case 0: Idioma = "es"
        Case 1: Idioma = "en"
        Case 2: Idioma = "fr"
        Case 3: Idioma = "it"
        Case 4: Idioma = "es-AR"
        Case 5: Idioma = "pt-PT"
    End Select
End Function

Private Function Trim_(ByVal hData As String) As String
    Trim_ = Trim$(Replace$(hData, Chr$(0), vbNullString))
End Function

Private Function Back(ByVal hData As String, ByVal Char As String) As String
    If InStrRev(hData, Char) <> 0 Then Back = Right$(hData, Len(hData) - InStrRev(hData, Char))
End Function

Private Function Textbetween(ByVal hData As String, ByVal hDelimit1 As String, ByVal hDelimit2 As String) As String
    On Error Resume Next
    Textbetween = Left$(Mid$(hData, InStr(hData, hDelimit1) + Len(hDelimit1)), InStr(Mid$(hData, InStr(hData, hDelimit1) + Len(hDelimit1)), hDelimit2) - 1)
End Function
 
Imagen
Mi programa hace más o menos eso, pero no logro meter la imagen GIF que tengo en una variable en un picture box. No se como hacerlo >.<

P.D: Muy bueno!

Saludos!
github.com/Slek-Z
Slek escribió:Mi programa hace más o menos eso, pero no logro meter la imagen GIF que tengo en una variable en un picture box. No se como hacerlo >.<

P.D: Muy bueno!

Saludos!
'Haber primero descargas la imagen
'luego la cargas normal...
' los picturebox aceptan los formatos : gif, jpg, bmp, ico, cur ,... pero no PNG

si quieres cargarlos desde internet busca una función que hice que servia para cargar la imagen directamente desde internet en un picturebox...Saludos
Imagen
Responder

Volver a “Otros lenguajes”