May 052013
 

Este es un OCX  llamado ImageWebSearch.ocx que sirve para buscar imágenes en la web, es algo similar al CommonDialog pero en vez de seleccionar un archivo en disco, lo seleccionamos de la web, luego está en ustedes manipular la url de la imágen obtenida. El OCX cuenta con dos motores de búsqueda el de Google y Devianart y tiene casi la totalidad de sus filtros, es totalmente asíncrono, por lo que no cuelga la aplicación al realizar peticiones, esto es algo importante porque al bajar el scroll de la lista, automáticamente va cargando nuevas búsquedas, osea va paginando el Listview con el scroll vertical (exactamente como lo hace Google Facebook etc.)

Dentro de la carpeta de descarga está el código de fuente, opté por compilarlo en OCX porque eran varios módulos,  formularios, controles de usuario y ademas un archivo de recurso exclusivo, por lo que compilado es mas fácil de utilizar.

Un punto en contra es que para la búsqueda utiliza los AJAX de los motores antes mencionados, por lo tanto si estos llegaran a cambiar con el tiempo el ocx quedaría obsoleto. Otra cosa a tener en cuenta es que la aplicación que lo implemente debe utilizar los temas de windows, de lo contrario el borde de las imágenes no se  mostrara correctamente.

Me quedaron algunas cosas que me hubiera gustado implementar, por ejemplo modificar el filtro desde código, pero al ser tantos me dió pereza  así que dejo en manos de ustedes si lo quieren hacer.

Requerimientos Windows XP y posteriores (Aunque no lo probé en XP, después edito.)

CtrlImageWebSearch.png

CtrlImageWebSearch2.png

 
Sep 142011
 

Para quienes no estén al tanto de que se trata pueden leer en Wikipedia sobre este sistema para almacenar información en una imagen, el cual es cada ves mas utilizado en diferentes productos y publicidades. hoy en día muchos celulares trae una aplicación para decodificar estas imágenes.

El modulo clase a continuación se encarga de Codificar y Decodificar QR Code,  utilizando dos apis de dos servidores web qrserver.com para codificar y zxing.org para decodificar, si bien esto podría hacerse sin estas dependencias me parece que desarrollar dicha tarea no es nada sensilla (teniendo en cuenta que la imagen no siempre estará presentada en forma vertical),  existen algunas dll para realizar este trabajo pero no encontré ninguna compatible  para VB6.

En el siguiente proyecto  encuenta la clase ClsQrCode.cls en la que encontraremos las siguientes funciones

  • GetPictureQrCode:  esta función retorna un StdPicture, el cual se seria de nuestro QR Code codificado, si no retorna ninguna imagen (Is Nothing)  entonces significa que la función fallo. A continuacion sus parametros.
    1. sText:    Requerido, Es el texto el cual queremos codificar, la clase solo se encarga de texto plano, si quieren pueden agregar los prefijos SMSTO: o TEL: etc. segun el caso, pueden ver un poco mas en goqr.me
    2. Width:   Requerido, Ancho de la imagen (Minimo 10 Px, Maximo 1000 Px)
    3. Height:  Requerido, Alto de la imagen (Minimo 10 Px, Maximo 1000 Px)
    4. Encoding:   Opcional, “UTF-8” o “ISO-8859-1”
    5. ErrCorrectionLevel:   Opcional,  “L”, “M”, “Q”, “H”
    6. ForeColor: Opcional, Color de los cuadritos
    7. BackColor:   Opcional, Color de fondo
    8. Margin:   Opcional, Margen (máximo 50, expresado en módulos)
  • DecodeFromStream: decodifica mediante el array de bits de una imagen. (Dos parámetros el primero el array de bits, y el segundo debe pasarse una variable de tipo string como retorno), si la función tiene éxito devuelve True
  • DecodeFromPicture: decodifica un StdPicture. (Dos parámetros el primero el StdPicture, y el segundo debe pasarse una variable de tipo string como retorno), si la función  tiene éxito devuelve True
  • DecodeFromFile: decodifica desde un archivo de imagen. (Dos parámetros el primero el path de la imagen, y el segundo debe pasarse una variable de tipo string como retorno), si la función tiene éxito devuelve True
  • DecodeFromUrl: decodifica desde la url de una imagen. (Dos parámetros el primero el la URL de la imagen, y el segundo debe pasarse una variable de tipo string como retorno), si la función tiene éxito devuelve True
QR CODE

 
Nov 302010
 

Esta función sirve para utilizar el API Speak de Google, con la cual podemos llevar un texto a voz de máquina, esta api sólo se limita a cien caracteres, y por supuesto necesitamos de internet para que funcione.
El primer parámetro es el texto que queremos escuchar, el segundo el idioma o mejor dicho la pronunciación, en el caso de español es “es” para otros por ejemplo:

Alemán: de
Danés: da
Español: es
Finlandia: fi
Francés: fr
Inglés: en
Italiano: it
Neerlandés: nl
Polaco: pl
Portugués: pt
Sueco: sv

y el tercer parámetro es para llamar a DoEvents si es que lo deseamos.

Option Explicit
'-----------------------------------------------------------------------------------------------------
'Autor: Leandro Ascierto
'Web: www.leandroascierto.com.ar
'Abreviaturas
'de, da, es, fi, fr, en, it, nl, pl, pt, sv"
'Alemán , Danés, Español, Finlandia, Francés, Inglés, Italiano, Neerlandés, Polaco, Portugués, Sueco
'----------------------------------------------------------------------------------------------------
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

Public Function GoogleSpeak(ByVal sText As String, Optional ByVal Language As String = "es", Optional ByVal bDoevents As Boolean) As Boolean
    On Error Resume Next
    Dim sTempPath As String, ml As String
    Dim FileLength As Long

    sText = Replace(sText, vbCrLf, " ")

    If Len(sText) > 100 Then Exit Function

    sTempPath = Environ("Temp") & "\TempMP3.MP3"

    If URLDownloadToFile(0&, "http://translate.google.com/translate_tts?tl=" & Language & "&q=" & sText, sTempPath, 0&, 0&) = 0 Then

        If mciSendString("open " & Chr$(34) & sTempPath & Chr$(34) & " type MpegVideo" & " alias myfile", 0&, 0&, 0&) = 0 Then

            ml = String(30, 0)
            Call mciSendString("status myfile length ", ml, 30, 0&)
            FileLength = Val(ml)
            If FileLength Then
                If mciSendString("play myFile", 0&, 0&, 0&) = 0 Then
                    Do While mciSendString("status myfile position ", ml, 30, 0&) = 0
                        If Val(ml) = FileLength Then GoogleSpeak = True: Exit Do
                        If bDoevents Then DoEvents
                    Loop
                End If
            End If
            Call mciSendString("close myfile", 0&, 0&, 0&)

        End If

        Kill sTempPath
    End If

End Function

Private Sub Command1_Click()
   Debug.Print GoogleSpeak("Antes era sexo droga y rock and roll, ahora es paja mate y chamame", "es", True)
End Sub
 
Nov 022009
 

Módulo bas con una función para obtener el PageRank de Google. Para los que no están muy al tanto de que se trata el PageRank, es un valor numérico de cero  a diez, que utiliza Google para marcar la importancia de una página web. Si tienen la barra Google instalada en su navegador podrán ver un botón donde figura una pequeña barra de progreso color verde.
Este código lo traduje de una fuente en PHP por lo que me dio algo de trabajo con algunas funciones propias del lenguaje.

Nota: este modulo a quedado obsoleto ya que Google no ofrece mas este servicio.

Insertar imágenes png en un ImageList

 
Jun 232009
 

Este es un módulo clase para utilizar el traductor de google, el cual trabaja con la API AJAX de idiomas para traducción y detección, para mas información sobre esta api puedes consultar aquí.
Cuenta con cuarenta y un lenguajes, y una función para auto-detectar el idioma, el módulo es más lento que las traducciones de la página de google ya que por lo que pude interpretar en la guía de ayuda, sólo trabaja con métodos GET y ésta sólo se limita a un máximo de 2000 caracteres por consulta, entonces si el texto a traducir es mayor a esta cantidad el módulo enviará más de una petición para traducir todo el texto, quizás algunos se preguntarán por qué no obtener el texto directamente de la web de google, y la respuesta es que la web con el tiempo puede cambiar su contenido HTML, dando como resultado un módulo obsoleto.
Otra cosa a tener en cuenta es la traducción a idiomas que utilicen una codificación de caracteres especiales como el “chino” que no se mostrará correctamente en un TextBox.
Su uso es muy sencillo y lo pueden ver en el siguiente ejemplo.

Google Traductor

 
May 042009
 

Este es un módulo con una función para implementar los diferentes gráficos de la Api Google Char en Visual Basic, quizás no tenga mucho sentido ya que dependemos de una conexión a internet y descargamos la imágen desde una web, lo cual ya requiere de un cierto tiempo, pero bueno siempre puede llegar a ser útil en estos casos.
Junto al proyecto de descarga hay cinco ejemplos muy sencillos y un editor en Flash que nos podrá ayudar mucho, primeramente a entender esta api y luego cómo manejar sus parámetros.
Para saber más acerca de cómo utilizar esta api pueden visitar esta Web, donde explica en detalle cada uno de los parámetros.
Los gráficos a continuación son directamente generados por Google Char.

Grafico de linea

Grafico de linea

Grafico de linea

 
May 012009
 

En realidad este no es un módulo, sino un formulario, el cual utiliza las Apis de Google SpellCheck, cuenta con varios idiomas y su uso es muy sencillo, sólo basta con una línea de código, en este proyecto/código no utilicé ninguna api, sólo la creación de algunos objetos (estos objetos ya están por defecto en Windows, por lo tanto no hay dependencias), obviamente requerimos de conexión a internet para que funcione.
Básicamente lo que hace es crear un XML y dentro del contenido de éste, el texto a corregir, se lo envía a Google en una petición de tipo POST y éste nos devuelve otro XML con las posibles sugerencias, del resto se encarga este formulario que va listando las sugerencias, reemplazando u omitiendo.
También cuenta con la posibilidad de agregar palabras a un diccionario, este no es más que un archivo de texto plano en el que se irán almacenando todas las palabras que agreguemos.

Corrector Ortográfico Google