Extraer testo de otras aplicaciones.

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
pedropedro
Mensajes: 3
Registrado: 08 Oct 2010, 16:27

Extraer testo de otras aplicaciones.

Mensaje por pedropedro »

Pues eso, básicamente quiero hacer una aplicación que coja el texto de otras aplicaciones, como chats, y lo guarde en archivos de texto.
La parte de guardar archivos de texto, con nombre dinámico basado en el nombre de la ventana y el la fecha/hora mas o menos lo tengo, pero no tengo ni idea de como extraer texto de otras aplicaciones.

En caso de que se pudiera, me gustaría algo de ayuda para poderle añadir opciones, tales como elegir cuales de las ventanas activas con botones o listas o algo, o elegir donde guardar ese texto en concreto, etc.

Os agradezco la ayuda de antemano.
Avatar de Usuario
Juanchi
Aprendiz de Mago
Mensajes: 33
Registrado: 26 Mar 2010, 00:24

Re: Extraer testo de otras aplicaciones.

Mensaje por Juanchi »

Antes que nada hola a todos... REGRESE :smt003
________________________________________________

respondiendo tu pregunta:
Para extraer texto de otras aplicaciones esta el ejemplo en los archivos de autoit (helpfiles)
usas el comando WinGetText("Titulo de la ventana", "") Si lo dejas vacio extrae todo el texto y si pones algo no se q pasa XD
(Eso q te lo explique alguien que sepa mas jeje)

Por ejemplo si lo que queres es leer un archivo de texto en el bloc de notas Y LA VENTANA ESTA, POR LO MENOS MINIMIZADA, seria asi:

$text = WinGetText("Texto - Bloc de notas", "")
MsgBox(0, "el texto leido fue:", $text)


si la ventana no esta abierta seria asi:

$text = fileread("Texto.txt")
MsgBox(0, "el texto leido fue:", $text)

[Espero haberte ayudado y no haberte entreberado mas] jeje...

Salu2!
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-

Imagen
pedropedro
Mensajes: 3
Registrado: 08 Oct 2010, 16:27

Re: Extraer testo de otras aplicaciones.

Mensaje por pedropedro »

Gracias, pero hay un problema, y es que solo extrae texto del primer control de la ventana. Es decir, en los navegadores solo extrae el texto de la barra de direcciones, por ejemplo.

En muchas otras aplicaciones ni siquiera extrae nada.


¿Hay algún comando o algo para elegir de que control extraer el texto? ¿Y como saber ese control?
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Extraer testo de otras aplicaciones.

Mensaje por Ximorro »

Hola, hay otra manera más directa, está la función ControlGetText, con la que puedes tomar el texto del control exacto en el que estés interesado.
Tienes que saber el identificador del control, cosa que puedes hacer con la herramienta Au3Info que viene con AutoIt.
Por ejemplo para capturar el texto de tu ventana Notepad mirando directamente el control de edición:
ControlGetText("Texto - Bloc de notas", "", "Edit1")
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Avatar de Usuario
Juanchi
Aprendiz de Mago
Mensajes: 33
Registrado: 26 Mar 2010, 00:24

Mensaje por Juanchi »

pedropedro escribió:Gracias, pero hay un problema, y es que solo extrae texto del primer control de la ventana. Es decir, en los navegadores solo extrae el texto de la barra de direcciones, por ejemplo.

En muchas otras aplicaciones ni siquiera extrae nada.


¿Hay algún comando o algo para elegir de que control extraer el texto? ¿Y como saber ese control?
Perdona no tenia idea de q pasara eso... Nunca lo use para extraer texto de un navegador jeje
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-

Imagen
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Extraer testo de otras aplicaciones.

Mensaje por Chefito »

Hacer un programa que coja todo el texto de todas las ventanas y todos los controles de éstas es casi imposible :smt012 . Al haber muchos programas hechos con flash, con java, muchos exploradores, etc, etc, etc....que se salen de los controles y ventanas comunes de windows, pues es muy dificil.
Para los exploradores se tiene que atacar con su api. Por ejemplo, para el Internet Explorer tienes que utilizar la udf IE.au3.

Además, lo que quieres hacer tiene pinta de ser un programa espía y como ya debes de saber, este tipo de programas no están permitidos en el foro :smt011 .

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 ;).
pedropedro
Mensajes: 3
Registrado: 08 Oct 2010, 16:27

Re: Extraer testo de otras aplicaciones.

Mensaje por pedropedro »

Chefito escribió:Hacer un programa que coja todo el texto de todas las ventanas y todos los controles de éstas es casi imposible :smt012 . Al haber muchos programas hechos con flash, con java, muchos exploradores, etc, etc, etc....que se salen de los controles y ventanas comunes de windows, pues es muy dificil.
Para los exploradores se tiene que atacar con su api. Por ejemplo, para el Internet Explorer tienes que utilizar la udf IE.au3.

Además, lo que quieres hacer tiene pinta de ser un programa espía y como ya debes de saber, este tipo de programas no están permitidos en el foro :smt011 .

Saludos.
Claro, tu teoría tiene mucha lógica, sobre todo si ves que digo claramente que quiero(querría, ojala xd) que se pueda elegir que ventanas o controles coger con un click encima de ellos, estilo AutoIt Windows Info. Y aun mas cuando digo que quiero que salga una ventana que te pregunte donde guardarlo.
Es muy lógico que un programa espía te pregunte donde guardar los datos "robados", y ya de paso a quien se los quieres enviar ¿No?

De todas formas, no parece ser muy fácil, y como todo esto no tiene un fin especifico mas allá de probar o aprender, creo que pasaré a otra cosa. Quizá en un tiempo halla aprendido lo suficiente para hacer esto. Ademas, no seria solo en navegadores (por lo del api), me gustaría capturar también mas cosas. En realidad es en general, coger texto de aplicaciones, por probar. Realmente no tengo un fin especifico de momento. No tengo ideas para una aplicación util xD.

Por cierto, gracias a Ximorro por informarme sobre el AutoIt Windows Info. No lo conocía, pero creo que lo voy a usar para hacer lo inverso, usar eso para insertar pulsaciones de teclado en VB.NET. Hace tiempo intente hacer un programa que enviase frases aleatoriamente a la gente de este modo, pero me pedía el Window Class de la ventana objetivo. Ahora con esto puedo verlo y a lo mejor intento eso, para divertirme viendo que responde la gente ante mensajes aleatorios indiscriminados jajaja
Avatar de Usuario
BasicOs
Site Admin
Mensajes: 2091
Registrado: 21 Nov 2006, 19:24
Ubicación: El Internet - (Canarias, España)
Contactar:

Re: Extraer testo de otras aplicaciones.

Mensaje por BasicOs »

Espero que se emplee con fines de ayuda y positivo para terceros, no como algo que de mala fama. El tema de capturar pantallas lo suelen hacer con el printscreen o la función de captura de pantallas.
Lo de reconocer texto dentro de java y otras es un topico recurrente en Autoit, es decir el OCR de jpgs, OCR=Reconocimiento óptico de caracteres, es decir pasar de imagen a caracter y unirlo para tener palabras.
Como siempre no es tan sencillo hacerlo de cero, no reinventar la rueda(Que se podría hacer un OCR en Autoit con tiempo), sino como en muchos casos en Autoit usando "Apis" y dlls, reutilizando motores que otros hacen como el caso de mysql/sqllite.
Buscando OCR en el buscador del foro salen bastantes resultados, también este enlace lleva a alguien que usa como OCR base Tesseract, que es el OCR que tiene Google en gratuito.
http://www.emesn.com/autoitforum/viewto ... =ocr#p8758

http://www.autoitscript.com/forum/index ... opic=89542

http://es.wikipedia.org/wiki/Tesseract_OCR
Tesseract es desarrollado actualmente por Google y distribuido bajo la licencia Apache, versión 2.0.
Tesseract está considerado como uno de los motores OCR libres con mayor precisión disponibles actualmente.
Procesa inglés, francés, italiano, alemán, español, portugués brasileño y neerlandés
Estas son las funciones en Autoit que han creado, como ven dos funciones clave:
  • Capturar texto en bloque
  • Buscar si existe un texto en algún lugar
en varias situaciones o elementos:
  • Pantalla(Screen) en
  • Ventana (Win),
  • y en Control:
_TesseractTempPathSet($temp_path)
_TesseractScreenCapture($get_last_capture = 0, $delimiter = "", $cleanup = 1, $scale = 2, $left_indent = 0, $top_indent = 0, $right_indent = 0, $bottom_indent = 0, $show_capture = 0)
_TesseractWinCapture($win_title, $win_text = "", $get_last_capture = 0, $delimiter = "", $cleanup = 1, $scale = 2, $left_indent = 0, $top_indent = 0, $right_indent = 0, $bottom_indent = 0, $show_capture = 0)
_TesseractControlCapture($win_title, $win_text = "", $ctrl_id = "", $get_last_capture = 0, $delimiter = "", $expand = 1, $scrolling = 1, $cleanup = 1, $max_scroll_times = 5, $scale = 2, $left_indent = 0, $top_indent = 0, $right_indent = 0, $bottom_indent = 0, $show_capture = 0)
_TesseractScreenFind($find_str = "", $partial = 1, $get_last_capture = 0, $delimiter = "", $cleanup = 1, $scale = 2, $left_indent = 0, $top_indent = 0, $right_indent = 0, $bottom_indent = 0, $show_capture = 0)
_TesseractWinFind($win_title, $win_text = "", $find_str = "", $partial = 1, $get_last_capture = 0, $delimiter = "", $cleanup = 1, $scale = 2, $left_indent = 0, $top_indent = 0, $right_indent = 0, $bottom_indent = 0, $show_capture = 0)
_TesseractControlFind($win_title, $win_text = "", $ctrl_id = "", $find_str = "", $partial = 1, $get_last_capture = 0, $delimiter = "", $expand = 1, $scrolling = 1, $cleanup = 1, $max_scroll_times = 5, $scale = 2, $left_indent = 0, $top_indent = 0, $right_indent = 0, $bottom_indent = 0, $show_capture = 0)
Salu22:)
Responder