Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - LeandroA

#591
Programación Visual Basic / Decodificar UTF-8
16 Septiembre 2007, 21:35 PM
buenas alguien sabe como decodificar utf-8, lo que hace utf-8, porlomenos lo que yo entendi, remplasa los caracteres con acentos o  caracteres especiales en otros,

Ejemplo:

D:\Mis documentos\Mi música    >Codificado>  D:\Mis documentos\Mi música

yo encontre en la web dos codigos para codificar


Private Const CP_UTF8 = 65001

Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpDefaultChar As Long, ByVal lpUsedDefaultChar As Long) As Long

Public Function UTF8_Encode(ByVal Text As String) As String

Dim sBuffer As String
Dim lLength As Long

If Text <> "" Then
lLength = WideCharToMultiByte(CP_UTF8, 0, StrPtr(Text), -1, 0, 0, 0, 0)
sBuffer = Space$(lLength)
lLength = WideCharToMultiByte(CP_UTF8, 0, StrPtr(Text), -1, StrPtr(sBuffer), Len(sBuffer), 0, 0)
sBuffer = StrConv(sBuffer, vbUnicode)
UTF8_Encode = Left$(sBuffer, lLength - 1)
Else
UTF8_Encode = ""
End If

End Function

Private Sub Form_Load()
Debug.Print UTF8_Encode("D:\Mis documentos\Mi música")
End Sub


y el otro


Private Function UTF8_Encode(ByVal sStr As String)
For l& = 1 To Len(sStr)
lChar& = AscW(Mid(sStr, l&, 1))
If lChar& < 128 Then
sUtf8$ = sUtf8$ + Mid(sStr, l&, 1)
ElseIf ((lChar& > 127) And (lChar& < 2048)) Then
sUtf8$ = sUtf8$ + Chr(((lChar& \ 64) Or 192))
sUtf8$ = sUtf8$ + Chr(((lChar& And 63) Or 128))
Else
sUtf8$ = sUtf8$ + Chr(((lChar& \ 144) Or 234))
sUtf8$ = sUtf8$ + Chr((((lChar& \ 64) And 63) Or 128))
sUtf8$ = sUtf8$ + Chr(((lChar& And 63) Or 128))
End If
Next l&
UTF8_Encode = sUtf8$
End Function

Private Sub Form_Load()
MsgBox UTF8_Encode("D:\Mis documentos\Mi música")
End Sub


Pero no puede encontrar nada para decodificarlo y la verdad no parece ser dificil, pero no se como hacerlo si alguien tiene un codigo o sabe como decodifcarlo se los agradezco.


Saludos
#592
Programación Visual Basic / Re: Ip Router
14 Septiembre 2007, 06:37 AM
lo hiciste usando winsock? me intersa el tema de obtener la ip publica de un router si tener que acudir a otro sitio, si tienes esa solucion por favor dime como lo hiciste
#593
hola lo que tienes que hacer es enumerar los controles de la ventana y cuando encuetras el texto del control es igual al que buscas significa que ya tienes el hwnd del control luego le pudes enviar el mensage click o enter o como al tener &No le puedes enviar el mensate de la letra N  los mensage se envian con SendMessage o PostMessage

aca te hice un ejemplo con una funcion para enviar click al algun control de una ventana
en la funcion tienes que poner el caption de la ventana y seguido el caption del control


En un Modulo
Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hWnd As Long) As Long
Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd As Long, ByVal Msg As Long, wParam As Any, lParam As Any) As Long
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Dim lRetValue As Long
Dim ControlText As String


Public Function EnumChildProc(ByVal hWnd As Long, ByVal lParam As Long) As Long
    Dim sSave As String
    sSave = Space$(GetWindowTextLength(hWnd) + 1)
    GetWindowText hWnd, sSave, Len(sSave)
    sSave = Left$(sSave, Len(sSave) - 1)
    If sSave = ControlText Then
    lRetValue = PostMessage(hWnd, WM_LBUTTONDOWN, ByVal CLng(0), ByVal CLng(0))
    lRetValue = PostMessage(hWnd, WM_LBUTTONUP, ByVal CLng(0), ByVal CLng(0))
    End If
    EnumChildProc = 1
End Function


Public Function MensageClick(WindowsCaption As String, ControlCaption As String)
    Dim Handle As Long
    ControlText = ControlCaption
    Handle = FindWindow(vbNullString, WindowsCaption)
    If Handle = 0 Then Exit Function
    EnumChildWindows Handle, AddressOf EnumChildProc, ByVal 0&
    MensageClick = lRetValue
End Function



y en el formulario


Private Sub Command1_Click()
ret = MensageClick("All rights reserved. Lab Asprise! (c) 1998-2004", "&No")
MsgBox "Mensage enviado?: " & CBool(ret)
End Sub



Te recomiendo para aprender de apis te vajes el Api-guide de la web y vas a ver muchos ejemplos sobre el manejo de estas

Saludos

#594
Programación Visual Basic / Re: Webcam
10 Septiembre 2007, 02:04 AM
hola como no se va a poder con el picture? mira solo tenes que pintarlo sobre el

Picture1.AutoRedraw = True
Picture1.PaintPicture Clipboard.GetData, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight
Picture1.Refresh

Saludos
#595
Wau se complico un poco la cosa jejej, esta interesante, yo la verdad poco entendi, pero lo que mas creo que hay que intentar es reducir el tamaño de la imagen, yo no me preocuaria quizas tanto por la velocidad en que escanea o comprime la imagen ya que supongo que todo esto va a ser mucho mas veloz que lo que tarde en enviar la imagen.lo que tenes mucha razón es lo de utilizar GDIplus, pero creo que es la opcion con mejor calidad y mayor velociad,  por lo de guardar la imagen en el disco con gdiplus es casi inevitable creo. en cambio con la clase cJPEGi veo que no.

la verdad esto se complica un poco para provar con un ordenador solo porque se hace un bucle, yo por ahora solo dispongo de uno si encuentro un amigo para ir provando voy a intentar hacer algunas otras pruevas y ver que resultados hay.

me podes dar una pequeña orientacion que es lo que hacen estas clases clsCRC, clsCRC, cHiResTimer

Saludos
#596
Otra cosa a favor que estuve viendo las imagenes .PNG suelen tener una cabesera muy grande y esta es repetitiva por lo que no seria neseario enviar todo el archivo sino que se puede oviar esta y escrivirla del otro lado osea en el server

mira

los archivos que guarde en 8bit tienen una cabesera de 887 bytes mas 12 que tienen al final tambien repetitivos e inesesarios, esto da un total de 999 bytes que ya no son  neseario mandar, osea que si este cuadro pesaba 2.224 - 999 = 1225 bytes

y en 4 bit tiene una cabesera de 167 + los 12 finales, osea un total de 179 bytes al pedo a lo que si el archivo pesaba 758 - 179 = 579 bytes

yo creo que con ese tamaño nos iramos acercando a una buena velocidad de transmicion no? a comparacion de los 37.000 bytes  que pesaba en formato .bmp cada cuadro
#597
Hola Tambien una buena opcion es llevar la imagen a 16 colores (4bit)  o a 256(8 bit) quizas no se vea tan lindo pero reduce la imagen a un valor muy importante yo estuve haciendo unas pruveas con el api GetDIBits256 lo que si los ejemplos que tengo guardan la imagen, tuviera que adaptarlo para que devuelva un stdpicture, y bien luego lo guarde como png en 4bit y digamos que la comparativa fuesta

El cuadro normal guardado en .png = 4.628 bytes
El cuadro en 8bit guardado en .png = 2.224 ybytes
El cuadro en 4bit guardado en .png = 758 bytes

Creo que el cambio es interesante, despues decime como era la otra manera para guardar imagenes que me comentabas, y si ya tenes algo pasamelo

Saludos

#598
Hola si es lo que entiendo vos deicis enviar como primera toma la pantalla completa y cargar toda la matriz, y recien desde alli empezar a comparar la vuelta anterior?

Estuve biendo el tema del envio de las imagenes, me faltaria arreglar un par de cuentas matematicas.

me gustaria que vieras como pienso que podria ser la forma de enviar las imagenes, lo que como te decia antes, todavía no caigo bien como redistribuir las imagenes del otro lado, pero no es dificil solo que tengo la cabeza un poco quemanda jejej.


http://es.geocities.com/leandroascierto/Envio.zip

aca solo tome el primer cuadro, fijate que use dos extructuras tipo Heders(Cabesera)


Private Type ScreenRemote
    Width As String * 5
    Height As String * 5
    CellsNumeber As String * 3
End Type

Private Type CuadroHeders
    Size As String * 5
    CellsNumber As String * 3
    Width As String * 4
    Height As String * 4
    FileType As String * 3
End Type



El primero que envia es el ScreenRemote en donde da datos de el tamaño de la pantalla y las cantidad de celdas

en el seugndo (CuadroHeders) se envia por cada imagen y aca va la informacion en que lugar deve pintar el cuadro, el tamaño del archivo, el ancho y alto de la imagen, y fileType lo puse por las dudas que se quiera espesificar el formato osea PNG o JPG, osea es masomenos para arrancar despues lo modificamos a como sea mejor

yo use los modulos GDIPlus en mi parecer es lo mas combeniente, pero bueno lo vemos.

El server es el que recive las imagenes y el cliente el que las envia, pero nose como quieras vos sino lo hacemos a la inversa, yo lo hice asi por ahora, por comodidad

Saludos

PD: hoy ya no voy a poder hacer mas ni voy a estar, porque tengo que ir a trabajar y vuelvo como a las 6 de la mañana  asi que cualquier cosa dejame un mensage aca.
#599
Hola,si si , tenes razón, hice una comparativa utilizando, la comprecion MD5 y es cierto es mucho mejor, prove lo siguiente,  tome ambas formas con el proyecto Compilado , y  primer proyecto sin md5 usaba 10.000 kB de memoria y con el md5 apenas 3.500, y el uso del CPU no parece cambiar en nada asi que si definitibamente esta mejor con MD5, Bueno dale vos entonces hace lo que dijiste antes sobre el picture y el md5 y despues mañana vemos que seguira

Saludos
#600
bien aca esta mi ejemplo

http://es.geocities.com/leandroascierto/Proyecto_Grupal.zip

Al final la pantalla la dividi en 8 de ancho y 8 de alto

En mi computador las modificaciones se producen sobre la hora donde hay un icono en el sistray que va cambiando y otro justo donde esta el check que cambia

la comparacion la hace cada 1 segundo y recorre 64 cuadros (que serian 8 * 8)

Que opinion tienen?

Cobein estuve mirando un poco el ejemplo y masomenos ronda en algo parecido a lo mio, lo uncio que veo es que para comparar la matriz() utilizas md5 para convertira en string, yo aca lo hice mas sencillo, despues lo voy a seguir testeando aver si puedo sacar alguna mejora para lo que hice yo , o bien terminar el tuyo, o si vos ya tenes otra cosa ponela si vamos viendo que seria lo mejor

Saludos