Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: rigorvzla en 20 Noviembre 2017, 00:43 am



Título: Ayuda necesito que el pc lea
Publicado por: rigorvzla en 20 Noviembre 2017, 00:43 am
buenas amigos les traigo lo siguiente , hago un programa simple donde lo que quiero es que  cuando yo sombree algo con el raton y diga "leer" el programa lo haga sin mas nada. aqui esta mi intento fallido si alguien me sabe seria de gran ayuda.

Código:
case "leer":
                    /   TextReader leer_eso;
                        leer_eso = new TextReader.Read();
                        speakOut(leer_eso.ReadLine());
                       break;


Título: Re: Ayuda necesito que el pc lea
Publicado por: okik en 20 Noviembre 2017, 01:19 am
buenas amigos les traigo lo siguiente , hago un programa simple donde lo que quiero es que  cuando yo sombree algo con el raton y diga "leer" el programa lo haga sin mas nada. aqui esta mi intento fallido si alguien me sabe seria de gran ayuda.

Código:
case "leer":
                    /   TextReader leer_eso;
                        leer_eso = new TextReader.Read();
                        speakOut(leer_eso.ReadLine());
                       break;
Cuando dices "leer" ¿te refieres a copiar al portapapeles?

De cualquier aplicación o de la misma


Título: Re: Ayuda necesito que el pc lea
Publicado por: Meta en 20 Noviembre 2017, 03:23 am
No se a que te refieres.
https://msdn.microsoft.com/es-es/library/k0t5wee3.aspx

df1zLfljUMM


Título: Re: Ayuda necesito que el pc lea
Publicado por: rigorvzla en 20 Noviembre 2017, 11:52 am
me refiero a que el computador "lea literalemnte" con el speechrecognizion
selecciono un texto le ordeno leer y el , lee el objeto y lo habla por las cornetas, lo que no se es el comando para que pueda leer el texto seleccionado


Título: Re: Ayuda necesito que el pc lea
Publicado por: Serapis en 20 Noviembre 2017, 12:52 pm
Típicamente tienen un método "Speak", incluso "Play".

Objeto.Speak("este mensaje")

Selecciona el objeto que utilizas, y luego pulsa F1, para que te lleve a la ayuda y puedas consultar los métodos que expone el objeto... Si no tienes instalada la ayuda (local), te llevará a la página de internet donde se aloja, precisas pués tener conexión en el equipo donde lo vayas a probar.


Título: Re: Ayuda necesito que el pc lea
Publicado por: Eleкtro en 20 Noviembre 2017, 15:08 pm
me refiero a que el computador "lea literalemnte" con el speechrecognizion
selecciono un texto le ordeno leer y el , lee el objeto y lo habla por las cornetas, lo que no se es el comando para que pueda leer el texto seleccionado

Es decir, eso que no sabes hacer, te refieres a que al seleccionar con el ratón una cadena de texto DE CUALQUIER APLICACIÓN / VENTANA ABIERTA, ¿quieres saber como capturar ese texto desde tu programa? (para luego "leerlo").

Cuando dices "leer" ¿te refieres a copiar al portapapeles?

De cualquier aplicación o de la misma

Deberías responder a la pregunta del compañero @Okik para aclarar mejor lo que pretendes hacer, por que no es tan simple si estamos hablando de la instancia de tu propio programa, o de capturar el texto de una ventana externa...

...para esto último se me ocurren al menos 3 alternativas, cada una con sus ventajas y desventajas:

1. API de Windows (funciones de ventana y procesado de mensajes de ventana)
    - Requiere la implementación, el uso y el control de errores de código no administrado.
    - El desarrollo de un algoritmo exitoso podría convertirse en una auténtica pesadilla y llevar mucho tiempo de desarollo con fases de ensayo y error, ya que por necesidad se requiere la implementación de diferentes metodologías para ubicar ventanas en diferentes tipos de ventanas (vease por ejemplo: ChildWindowFromPoint y RealChildWindowFromPoint). Todo depende de lo que realmente necesite hacer tu algoritmo, cómo mínimo vas a tener que deliverar el mensaje de ventana WM_GETTEXT a la ventana del control activo de la ventana principal activa (la cual puedes obtener con la función GetForegroundWindow).
    - Ejecución rápida.

2. Microsoft UI Automation
    - Solución guiada y facil mediante código administrado que simplifica la tediosa implementación equivalente con la API de Windows y le abstrae de cierta dificultad.
    - Solo aplicable a programas que soporten la API de UI Automation ( UIA TextPattern ).
    - Ejecución lenta (muy lenta en comparación con unas simples llamadas a las funciones de la API de Windows).
   
3. Captura del portapapeles de Windows
    - Requiere el uso inevitable y la "escucha" de la combinación de teclas "CTRL+C".
    - Solución intrusiva para el usuario, ya que se reemplazaría el contenido del portapapeles. Por otro lado, se puede llevar a cabo una copia del contenido para restaurarla despues.
    - No funcionaría en todo tipo de ventanas, sobre todo en controles que tengan bloqueado el copiado de texto mediante "CTRL+C".

Luego me dejo la alternativa más avanzada pero que probablemente sería la más eficiente a efectos prácicos: el API Hooking, pero no me hago una idea del todo clara de como se podría implementar a cabo para el objetivo de esta tarea en particular.

Como ves tienes varias opciones, pero desde luego esto no sería cuestion de que te digan "un comando para hacerlo", por favor dejemos de pensar en "comandos" y de pedir "comandos", aquí no hay tales "comandos". La programación requiere de un estudio con un mínimo de conocimiento y/o investigación previa, y del esfuerzo personal/individual para el desarrollo de algoritmos así...

Saludos.


Título: Re: Ayuda necesito que el pc lea
Publicado por: rigorvzla en 20 Noviembre 2017, 18:14 pm
¿quieres saber como capturar ese texto desde tu programa? (para luego "leerlo").
   
3. Captura del portapapeles de Windows
    - Requiere el uso inevitable y la "escucha" de la combinación de teclas "CTRL+C".
    - Solución intrusiva para el usuario, ya que se reemplazaría el contenido del portapapeles. Por otro lado, se puede llevar a cabo una copia del contenido para restaurarla despues.
    - No funcionaría en todo tipo de ventanas, sobre todo en controles que tengan bloqueado el copiado de texto mediante "CTRL+C".

AMIGO!!!  has dado en el clavo de mi pregunta, y tambien con la solucion (una parte de ella) esa opcion de copiar el texto para colocarlo en portapapeles me gusta hasta ahi vamos bien mas no se como hacer que lea el portapapeles luego de tner los datos, me darias un ejemplo aplicable a c# , estas en lo correcto ;-)


Título: Re: Ayuda necesito que el pc lea
Publicado por: Eleкtro en 20 Noviembre 2017, 20:15 pm
no se como hacer que lea el portapapeles luego de tner los datos, me darias un ejemplo aplicable a c#

Te daré algo mejor, la documentación oficial (para WindowsForms):
  • Clipboard.GetText Function | docs.microsoft.com (https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.clipboard.gettext?view=netframework-4.7.1#System_Windows_Forms_Clipboard_GetText)
( ahí tienes un ejemplo en C#. )

...Supongo que además querrás implementar un monitor de actividad del portapapeles. Aquí tienes toda la información necesaria, deberías leerla ( también para prevenirte de utilizar la metodología obsoleta con la función SetClipboardViewer )
  • Monitoring Clipboard Contents | technet.microsoft.com (https://technet.microsoft.com/en-us/library/ms649016#dataxchg_Monitoring_Clipboard_Contents)

Ejemplo en C#:
  • Monitor for clipboard changes using AddClipboardFormatListener | fluxbytes.com (https://www.fluxbytes.com/csharp/how-to-monitor-for-clipboard-changes-using-addclipboardformatlistener/)

Saludos.


Título: Re: Ayuda necesito que el pc lea
Publicado por: rigorvzla en 21 Noviembre 2017, 00:04 am
bueno eso no me ayudo mucho mi ingles no es nada bueno y teniendo en cuenta que soy nuevo en esto tampoco es de mucha ayuda, simplemente me gustaria saber una forma de como , luego de tener en el clipboard un texto, el speech recognizer lo lea, mas nada.


Título: Re: Ayuda necesito que el pc lea
Publicado por: tincopasan en 21 Noviembre 2017, 00:56 am
Bueno, entonces tienes un gran problema!. Veamos, en lo personal Eleкtro es quien mas explica sobre net (aunque a veces cree que entendemos los códigos que para el deben ser simples), por lo tanto hay que prestar atención a la info que brinda en net.
Sino sabes  lo mínimo de ingles(en lo personal lo odio), estarás muy limitado en  el aprendizaje. Muchas veces no hay nada tan simple como para en una línea hacer lo que uno quiere. Ser nuevo no debe ser una excusa, todos estamos aprendiendo y no siempre es soplar y hacer botellas.
Saludos.


Título: Re: Ayuda necesito que el pc lea
Publicado por: rigorvzla en 21 Noviembre 2017, 01:50 am
BUENO MI GENTE!!! lo eh conseguido y como dice el compañero de arriba, en efecto es cosa de una linea solo que plantearlo es un dolor de cabeza jeje, consegui la solucion por mi mismo despues de tanto probar Muchas gracias a todos los que me ayudaron y de alguna forma una cosa dio con la otra, ese punto 3 fue la clave y el inicio de la pesadilla que me llevo al exito gracias jeje feliz noche! :laugh: ;-)


Título: Re: Ayuda necesito que el pc lea
Publicado por: rigorvzla en 22 Noviembre 2017, 02:08 am
Comparto mi solucion a este caso, era algo simple pero en razones de planteamiento y poco conocimiento de herramientas fue una odisea

Este codigo es el mio y como logre mi objetivo
Código:
                //    Clipboard.Clear();
                //    CONTROL + C
                //    string porta = Clipboard.GetText();
                //    habla.SpeakAsync(porta);
                //   

este otro fue de un ususario que me auxilio con el mismo asunto y basicamente en contexto de uso, hacen lo mismo (leer texto seleccionado)

Código:
                    CONTROL + C
                    pBuilder.ClearContent();
                    pBuilder.AppendText(Clipboard.GetText());
                    habla.SpeakAsync(pBuilder);                   
                   

espero que como a mi les sea de gran utilidad  ;-)