Extraer testo de otras aplicaciones.
-
- Mensajes: 3
- Registrado: 08 Oct 2010, 16:27
Extraer testo de otras aplicaciones.
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.
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.
Re: Extraer testo de otras aplicaciones.
Antes que nada hola a todos... REGRESE
________________________________________________
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!
________________________________________________
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!
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
-
- Mensajes: 3
- Registrado: 08 Oct 2010, 16:27
Re: Extraer testo de otras aplicaciones.
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?
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?
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: Extraer testo de otras aplicaciones.
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")
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)
Perdona no tenia idea de q pasara eso... Nunca lo use para extraer texto de un navegador jejepedropedro 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?
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Extraer testo de otras aplicaciones.
Hacer un programa que coja todo el texto de todas las ventanas y todos los controles de éstas es casi imposible . 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 .
Saludos.
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 .
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 ;).
-
- Mensajes: 3
- Registrado: 08 Oct 2010, 16:27
Re: Extraer testo de otras aplicaciones.
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.Chefito escribió:Hacer un programa que coja todo el texto de todas las ventanas y todos los controles de éstas es casi imposible . 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 .
Saludos.
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
- 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.
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
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
Estas son las funciones en Autoit que han creado, como ven dos funciones clave: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
- Capturar texto en bloque
- Buscar si existe un texto en algún lugar
- Pantalla(Screen) en
- Ventana (Win),
- y en Control:
Salu22:)_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)