Autodetector de fuente usada...
Autodetector de fuente usada...
Hola a todos/as,
ahora que domino lo básico en Autoit quiero aprender. Y pensando pensando se me ha ocurrido crear un programa que a poder ser sea con Autoit ( ya que se programar ; y si es java ".js" pues ), para poder averiguar la fuente y color usada en una frase/letra.
Ej.
Uso Arial ( en color verde). Y al poner en el recuadro Arial ( quien dice recuadro dice cualquier cosa) me diga.
Fuente : Arial
Negrita : N/A
Subrayado : N/A
Color : Verde ( no quiero que diga verde oscuro o 0x000234 xd [aunque este ultimo no estaria mal] ).
Se entiende?? Gracias :)
ahora que domino lo básico en Autoit quiero aprender. Y pensando pensando se me ha ocurrido crear un programa que a poder ser sea con Autoit ( ya que se programar ; y si es java ".js" pues ), para poder averiguar la fuente y color usada en una frase/letra.
Ej.
Uso Arial ( en color verde). Y al poner en el recuadro Arial ( quien dice recuadro dice cualquier cosa) me diga.
Fuente : Arial
Negrita : N/A
Subrayado : N/A
Color : Verde ( no quiero que diga verde oscuro o 0x000234 xd [aunque este ultimo no estaria mal] ).
Se entiende?? Gracias :)
Sin error no hay esfuerzo, sin esfuerzo no se programa!
Re: Autodetector de fuente usada...
Mm, a ver si entendí. Querés hacer un programa que contenga un recuadro en el cual puedas introducir texto con cierto formato y querés que el programa identifique fuente y color...
Visto así, no lo veo posible. Primero porque el formato de texto en sí no es una... propiedad intrínseca (por decirlo así) del texto, sino que es dado por el programa con el que estás trabajando el texto. Al pegarlo en cualquier otro lado perdería el formato, claro (porque bueno, en realidad nunca lo tuvo).
Visto así, no lo veo posible. Primero porque el formato de texto en sí no es una... propiedad intrínseca (por decirlo así) del texto, sino que es dado por el programa con el que estás trabajando el texto. Al pegarlo en cualquier otro lado perdería el formato, claro (porque bueno, en realidad nunca lo tuvo).
No soy un hombre de plegarias, pero si estás en el cielo sálvame por favor Superman!
Re: Autodetector de fuente usada...
Nahuel escribió:Mm, a ver si entendí. Querés hacer un programa que contenga un recuadro en el cual puedas introducir texto con cierto formato y querés que el programa identifique fuente y color...
Visto así, no lo veo posible. Primero porque el formato de texto en sí no es una... propiedad intrínseca (por decirlo así) del texto, sino que es dado por el programa con el que estás trabajando el texto. Al pegarlo en cualquier otro lado perdería el formato, claro (porque bueno, en realidad nunca lo tuvo).
mm nose... si bien es muuy cierto lo k decis pero tambien es cierto k si uno copia del IE y pega en el Word, el formato sigue siendo igual y sin perdida.. al igual k con controles del RICHEDIT... asik pienso k si es posible
jaja saludos
Aunk no m Buskes, Seguro m enkontras!
Re: Autodetector de fuente usada...
Si es cierto, pero eso es una forma de... interacción, por decirlo así, entre el explorador y Word. Quiero suponer que si uno copia un texto de un explorador con una fuente exótica (que no esté instalada en nuestro sistema) no se vería igual en Word. Por lo que, pienso yo, para poder lograr lo que él quiere se debería tener una amplia colección de fuentes O el programa debería trabajar de forma similar a word y analizar el portapapeles, por lo que sería necesario un manejo avanzado del mismo.
No soy un hombre de plegarias, pero si estás en el cielo sálvame por favor Superman!
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Autodetector de fuente usada...
Jejejeje.....este post se posteó en el foro de "Preguntas sencillas", y como creí que no era tan sencilla la cosa lo cambié a este. Por lo que he visto acerté .
Mmmmm......yo es que estoy un poco confundido. No se si lo que quiere es averiguar el formato del texto de un control o el que se copia en el clipboard (portapapeles).
Si es averiguar el formato de texto de un control, para eso habría que utilizar apis a manta.....como no . Y sabiendo que apis tienes que utilizar pues a lo mejor encuentras algo en el foro ingles. Yo encontré un script que más o menos te daba esa información (luego posteo el enlace que ahora mismo no lo recuerdo), pero eso tenía un problema. No funciona con todos los controles o programas. Por ejemplo, en los editores de texto, los controles donde escribes (ejemplo RichEdit entre otros) pueden contener trozos de textos con varios formatos diferentes, por lo tanto estas apis te van a devolver casi seguro el formato del sistema. También está el problema de los navegadores, por ejemplo el internet explorer, que como son controles "especiales" (clases envolventes) son dificilisimos de atacar, y encima seguimos teniendo el mismo problema que comenté anteriormente. Lo dicho, funcionaría con los controles típicos de windows.
Luego está el tema de ver el formato de lo copiado en el clipboard. Esto es bastante complicado. Además, seguimos teniendo el mismo problema que antes.....podemos copiar texto con diferentes formatos . Pero no pasa nada . Para eso están las cabezas pensantes.
Me puse a pensar en alguna forma de hacerlo y se me ocurrió una pequeña triquiñuela que diría el formato de todo el texto copiado, incluso si éste tiene trozos con distinto formato . Va ha ser algo laborioso, pero yo daré la idea y al que le interese que la desarrolle más a fondo.
Cuando haga una pequeña función posteo todo el código y las posibles alternativa.
Saludos.
Mmmmm......yo es que estoy un poco confundido. No se si lo que quiere es averiguar el formato del texto de un control o el que se copia en el clipboard (portapapeles).
Si es averiguar el formato de texto de un control, para eso habría que utilizar apis a manta.....como no . Y sabiendo que apis tienes que utilizar pues a lo mejor encuentras algo en el foro ingles. Yo encontré un script que más o menos te daba esa información (luego posteo el enlace que ahora mismo no lo recuerdo), pero eso tenía un problema. No funciona con todos los controles o programas. Por ejemplo, en los editores de texto, los controles donde escribes (ejemplo RichEdit entre otros) pueden contener trozos de textos con varios formatos diferentes, por lo tanto estas apis te van a devolver casi seguro el formato del sistema. También está el problema de los navegadores, por ejemplo el internet explorer, que como son controles "especiales" (clases envolventes) son dificilisimos de atacar, y encima seguimos teniendo el mismo problema que comenté anteriormente. Lo dicho, funcionaría con los controles típicos de windows.
Luego está el tema de ver el formato de lo copiado en el clipboard. Esto es bastante complicado. Además, seguimos teniendo el mismo problema que antes.....podemos copiar texto con diferentes formatos . Pero no pasa nada . Para eso están las cabezas pensantes.
Me puse a pensar en alguna forma de hacerlo y se me ocurrió una pequeña triquiñuela que diría el formato de todo el texto copiado, incluso si éste tiene trozos con distinto formato . Va ha ser algo laborioso, pero yo daré la idea y al que le interese que la desarrolle más a fondo.
Cuando haga una pequeña función posteo todo el código y las posibles alternativa.
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Re: Autodetector de fuente usada...
Es cierto pero en si la idea ya k digamos k no se puede pork el portapapeles pierde dicho formato,, seria tambien valido pork no usar/hacer una herramienta similar al Au3info.. de k asentar el mouse sobre un control y este se muetre info directamente. ya k perderiamos el formato en el portapapels a no ser k sea controles similares a RichEdit como dijimos.. nose :O kisas apis.. no keda otra jajChefito escribió:Jejejeje.....este post se posteó en el foro de "Preguntas sencillas", y como creí que no era tan sencilla la cosa lo cambié a este. Por lo que he visto acerté .
Mmmmm......yo es que estoy un poco confundido. No se si lo que quiere es averiguar el formato del texto de un control o el que se copia en el clipboard (portapapeles).
Si es averiguar el formato de texto de un control, para eso habría que utilizar apis a manta.....como no . Y sabiendo que apis tienes que utilizar pues a lo mejor encuentras algo en el foro ingles. Yo encontré un script que más o menos te daba esa información (luego posteo el enlace que ahora mismo no lo recuerdo), pero eso tenía un problema. No funciona con todos los controles o programas. Por ejemplo, en los editores de texto, los controles donde escribes (ejemplo RichEdit entre otros) pueden contener trozos de textos con varios formatos diferentes, por lo tanto estas apis te van a devolver casi seguro el formato del sistema. También está el problema de los navegadores, por ejemplo el internet explorer, que como son controles "especiales" (clases envolventes) son dificilisimos de atacar, y encima seguimos teniendo el mismo problema que comenté anteriormente. Lo dicho, funcionaría con los controles típicos de windows.
Luego está el tema de ver el formato de lo copiado en el clipboard. Esto es bastante complicado. Además, seguimos teniendo el mismo problema que antes.....podemos copiar texto con diferentes formatos . Pero no pasa nada . Para eso están las cabezas pensantes.
Me puse a pensar en alguna forma de hacerlo y se me ocurrió una pequeña triquiñuela que diría el formato de todo el texto copiado, incluso si éste tiene trozos con distinto formato . Va ha ser algo laborioso, pero yo daré la idea y al que le interese que la desarrolle más a fondo.
Cuando haga una pequeña función posteo todo el código y las posibles alternativa.
Saludos.
Saludos
Aunk no m Buskes, Seguro m enkontras!
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Autodetector de fuente usada...
A ver gna08, cuando yo digo que se recuperar el formato del texto del portapapeles es que se puede .
No dudes de mis palabras . Se recupera de una forma no habitual. Habrá que tratar el texto recuperado previamente.
A ver si me pongo con la función y la acabo esta noche. Es que he estado de cervezas todo el día .
No dudes de mis palabras . Se recupera de una forma no habitual. Habrá que tratar el texto recuperado previamente.
A ver si me pongo con la función y la acabo esta noche. Es que he estado de cervezas todo el día .
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Re: Autodetector de fuente usada...
sorry master! . bueno cheeeeeeee jajaja. no me retes. k no me di cuenta jejej..Chefito escribió:A ver gna08, cuando yo digo que se recuperar el formato del texto del portapapeles es que se puede .
No dudes de mis palabras .
veremos k sale. saludos y suerte con las cerbezas
Aunk no m Buskes, Seguro m enkontras!
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Autodetector de fuente usada...
Jajajaja.....gna08 lo decía en broma hombre! .
Además, como siempre canté victoria antes de tiempo. No comprobé copiar texto de varios programas y ahora he visto que no funciona con todos. Como se dijo anteriormente esto parece que se comunica unos programas con otros. Estos formatos que he añadido funcionan por ejemplo con el IE, con el Wordpad, etc....pero con otros falla . He intentado un montón de cosas pero no ha funcionado nada. A ver si alguien consigue algo .
Bueno, al lio. He variado la función _ClipBoard_GetData y le he añadido dos formatos más, uno que devuelve el texto en formato rtf y el otro en html. Para que la función devuelva el texto en formato rtf debes poner el valor 19 y para el html el 20. Ya he dicho que no funciona con todas las copias de texto de todos los programas y controles.
Es una lástima que no funcione con todos .
Mi idea era coger el texto en formato rtf para luego tratar las etiquetas con otras funciones y ver su formato.
En microsoft está la especificacion del rtf.
Y si recuperas el texto en formato html, te devuelve una cabecera con información del texto copiado el cual habría que quitar para que funcionase como página html.
Luego encontré este script en el foro de habla inglesa: http://www.autoitscript.com/forum/index ... ntry763027
Con este script se recupera el formato del texto de los controles. Pero como dije anteriormente no funciona con todos.
Utiliza apis y la estructura $tagTEXTMETRIC para sacar el formato del texto del objeto.
He intentado también recuperar la información con la estructura $tagLOGFONT, pero con poco éxito.
Y para recuperar el color del texto del objeto supongo que se podría hacer con la api GetTextColor. Haciendo una búsqueda en el foro ingles he encontrado esta api definada en este post: http://www.autoitscript.com/forum/index ... ntry665511
A ver si con toda esta información alguien consigue algo, pero lo veo dificil.
Saludos.....aaahhhh gna08, con esto he demostrado que no soy un master, ya que no he podido resolverlo . Lástima .
Además, como siempre canté victoria antes de tiempo. No comprobé copiar texto de varios programas y ahora he visto que no funciona con todos. Como se dijo anteriormente esto parece que se comunica unos programas con otros. Estos formatos que he añadido funcionan por ejemplo con el IE, con el Wordpad, etc....pero con otros falla . He intentado un montón de cosas pero no ha funcionado nada. A ver si alguien consigue algo .
Bueno, al lio. He variado la función _ClipBoard_GetData y le he añadido dos formatos más, uno que devuelve el texto en formato rtf y el otro en html. Para que la función devuelva el texto en formato rtf debes poner el valor 19 y para el html el 20. Ya he dicho que no funciona con todas las copias de texto de todos los programas y controles.
Código: Seleccionar todo
; #FUNCTION# ====================================================================================================================
; Nombre...........: _ClipBoard_GetDataAlternative
; Descripción ...: Recibe los datos del clipboard (portapapeles) en el formato que le digas (texto, texto unicode, rtf, Html, binario, etc).
; Sintasis.........: _ClipBoard_GetDataAlternative ([$Formato = 0])
; Parametros ....: $iFormat - Especifica el formato del clipboard:
; |$CF_TEXT - Text format (Formato texto)
; |$CF_BITMAP - Handle to a bitmap (HBITMAP)
; |$CF_METAFILEPICT - Handle to a metafile picture (METAFILEPICT)
; |$CF_SYLK - Microsoft Symbolic Link (SYLK) format
; |$CF_DIF - Software Arts' Data Interchange Format
; |$CF_TIFF - Tagged image file format
; |$CF_OEMTEXT - Text format containing characters in the OEM character set
; |$CF_DIB - BITMAPINFO structure followed by the bitmap bits
; |$CF_PALETTE - Handle to a color palette
; |$CF_PENDATA - Data for the pen extensions to Pen Computing
; |$CF_RIFF - Represents audio data in RIFF format
; |$CF_WAVE - Represents audio data in WAVE format
; |$CF_UNICODETEXT - Unicode text format
; |$CF_ENHMETAFILE - Handle to an enhanced metafile (HENHMETAFILE)
; |$CF_HDROP - Handle to type HDROP that identifies a list of files
; |$CF_LOCALE - Handle to the locale identifier associated with text in the clipboard
; |$CF_DIBV5 - BITMAPV5HEADER structure followed by bitmap color and the bitmap bits
; |$CF_OWNERDISPLAY - Owner display format
; |$CF_DSPTEXT - Text display format associated with a private format
; |$CF_DSPBITMAP - Bitmap display format associated with a private format
; |$CF_DSPMETAFILEPICT - Metafile picture display format associated with a private format
; |$CF_DSPENHMETAFILE - Enhanced metafile display format associated with a private format
; Le he añadido dos nuevos formatos:
; 18 - Formato texto rtf (Rich Text Format - Formato de texto enriquecido)
; 19 - Formato Html
; Valores devueltos.: Exito - Devuelve el texto copiado en el clipboard en el formato especificado
; - @extended da la longitud del texto devuelto o de los bytes
; Fallo - 0
; Author ........: Paul Campbell (PaulIA)
; Modificaciones.: Gary Frost,
; Ascend4nt (now follows traditional ClipBoard 'get' code, fixed $CF_UNICODETEXT errors)
; Chefito,
; Es una modificación de la función original _ClipBoard_GetData para que pueda devolver el texto en los formatos rtf y html
; Comentarios ...: Esta función devuelve los datos que tiene almacenados el clipboard en el formato que le especifiques.
; Para que funcione necesitas importar la librería udf Clipboard.au3 (#include <ClipBoard.au3>), ya que
; utiliza varias funciones de esta librería.
; Relacionadas .......: _ClipBoard_GetData, _ClipBoard_GetDataEx, _ClipBoard_SetData
; Link ..........;
; Example .......; Yes
; ===============================================================================================================================
Func _ClipBoard_GetDataAlternative($Formato = 1)
If Not (_ClipBoard_IsFormatAvailable($Formato) Or $Formato=18 Or $Formato=19) Then Return SetError(-1, 0, 0)
If Not _ClipBoard_Open(0) Then Return SetError(-2, 0, 0)
Switch $Formato
Case 18
$iFormat=_ClipBoard_RegisterFormat ("Rich Text Format")
If $iFormat=0 Then Return SetError(-1, 0, 0)
Case 19
$iFormat=_ClipBoard_RegisterFormat ("HTML Format")
If $iFormat=0 Then Return SetError(-1, 0, 0)
Case Else
$iFormat=$Formato
EndSwitch
Local $hMemory = _ClipBoard_GetDataEx($iFormat)
;_ClipBoard_Close() ; moved to end: traditionally done *after* copying over the memory
If $hMemory=0 Then
_ClipBoard_Close()
Return SetError(-3, 0, 0)
EndIf
Local $pMemoryBlock=_MemGlobalLock($hMemory)
If $pMemoryBlock=0 Then
_ClipBoard_Close()
Return SetError(-4,0,0)
EndIf
; Get the actual memory size of the ClipBoard memory object (in bytes)
Local $iDataSize=_MemGlobalSize($hMemory)
If $iDataSize = 0 Then
_MemGlobalUnlock($hMemory)
_ClipBoard_Close()
Return SetError(-5,0,"")
EndIf
Local $tData
Switch $Formato
Case $CF_TEXT, $CF_OEMTEXT, 18, 19, 20
$tData = DllStructCreate("char[" & $iDataSize & "]", $pMemoryBlock)
Case $CF_UNICODETEXT
; Round() shouldn't be necessary, as CF_UNICODETEXT should be 2-bytes wide & thus evenly-divisible
$iDataSize=Round($iDataSize/2)
$tData = DllStructCreate("wchar[" & $iDataSize & "]", $pMemoryBlock)
Case Else
; Binary data return for all other formats
$tData = DllStructCreate("byte[" & $iDataSize & "]", $pMemoryBlock)
EndSwitch
; Grab the data from the Structure so the Memory can be unlocked
Local $vReturn = DllStructGetData($tData, 1)
; Unlock the memory & Close the clipboard now that we have grabbed what we needed
_MemGlobalUnlock($hMemory)
_ClipBoard_Close()
; Return the size of the string or binary object in @extended
Return SetExtended($iDataSize, $vReturn)
EndFunc ;==>_ClipBoard_GetData
Mi idea era coger el texto en formato rtf para luego tratar las etiquetas con otras funciones y ver su formato.
En microsoft está la especificacion del rtf.
Y si recuperas el texto en formato html, te devuelve una cabecera con información del texto copiado el cual habría que quitar para que funcionase como página html.
Luego encontré este script en el foro de habla inglesa: http://www.autoitscript.com/forum/index ... ntry763027
Con este script se recupera el formato del texto de los controles. Pero como dije anteriormente no funciona con todos.
Utiliza apis y la estructura $tagTEXTMETRIC para sacar el formato del texto del objeto.
He intentado también recuperar la información con la estructura $tagLOGFONT, pero con poco éxito.
Y para recuperar el color del texto del objeto supongo que se podría hacer con la api GetTextColor. Haciendo una búsqueda en el foro ingles he encontrado esta api definada en este post: http://www.autoitscript.com/forum/index ... ntry665511
A ver si con toda esta información alguien consigue algo, pero lo veo dificil.
Saludos.....aaahhhh gna08, con esto he demostrado que no soy un master, ya que no he podido resolverlo . Lástima .
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Re: Autodetector de fuente usada...
y con esto se afirma mi teoria jejeje. por eso te lo decia aprendiz jiji bueno cheChefito escribió:aaahhhh gna08, con esto he demostrado que no soy un master, ya que no he podido resolverlo . Lástima .
Aunk no m Buskes, Seguro m enkontras!
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Autodetector de fuente usada...
Sí, tenías razón , pero quien ha avanzado algo con el código?? .
Saludos.
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Re: Autodetector de fuente usada...
Chefito escribió:Sí, tenías razón , pero quien ha avanzado algo con el código?? .
Saludos.
jajaja deja k me meta en el asunto y vemos k sale jajaj esta bien chefito.. ya avanzaste bastante. eso es bueno... falta mejorarlo..
P/D: sin ofender son mis charlas
Aunk no m Buskes, Seguro m enkontras!