Página 1 de 1

comprobar selección de texto

Publicado: 24 Nov 2010, 19:16
por Jonny
Hola

¿Como puedo comprobar si se ha seleccionado el texto que hay debajo del foco del teclado?

En principio serviría comprobando si por ejemplo Shift+flecha abajo están pulsadas, pero esto puede ocurrir, sin estarse seleccionando nada...

¿que se os ocurre?

Salu2!

Re: comprobar selección de texto

Publicado: 26 Nov 2010, 11:48
por Ximorro
Si te centras en controles concretos puede haber funciones para ello (como en editboxes o inputlines). Pero una solución global es más complicada (selección en programas Java, Flash, texto no editable como PDF, páginas web...)

Pero para eso se me ocurre una solución, quizás tampoco sea totalmente completa pero lo es mucho más que centrarse en controles específicos: hacer un COPY.
La inmensa mayoría de aplicaciones copian el texto que tienen seleccionado cuando se hace CTRL-C, así que yo haría eso con un SEND y miraría si en el portapapeles aparece un texto nuevo ;-)
Naturalmente sería cosa de restaurar el portapapeles al un estado anterior de la comprobación, sino le aparecerán al usuario cosas allí que él no ha copiado...

Re: comprobar selección de texto

Publicado: 26 Nov 2010, 13:43
por Jonny
Hola

Es una buena solución. Pero se complicaría un poco si se trata de imágenes, archivos .. ¿no?

Por eso de que Las funciones Clip() de AutoIt no tienen un tratamiento tan avanzado del portapapeles y seguramente habría que tirar de apis, o alguna UDF de AutoIt, que haga un tratamiento avanzado del portapapeles (creo que viene una en la instalación de AutoIt).

¿No sería más fácil quizá comprobando si se pulsan la tecla Shift y una de las cuatro teclas de dirección y si se cumple la condición mirar si lo que hay debajo del foco del teclado está resaltado? Supongo que para eso habría que tirar de las funciones pixel. Lo que no se si sería del todo efectivo, pues quizá algún programa muestre la selección diferente, y ....

La idea era, comprobar cuando se selecciona y se deselecciona algo....

Salu2!

Re: comprobar selección de texto

Publicado: 26 Nov 2010, 17:23
por Chefito
Jonny escribió:¿Como puedo comprobar si se ha seleccionado el texto que hay debajo del foco del teclado?
Con esto quieres decir que quieres saber si el texto donde está el cursor está seleccionado??? Es que hay muchos programas donde se puede seleccionar texto y que no haya cursor.
El tema de las teclas shift más flechas no es factible, ya que se puede seleccionar con el ratón (que es lo que se suele hacer).
Lo de comprobar el portapapeles es buena idea, pero también tiene sus complicaciones, ya que puedes seleccionar algo y no copiarlo o yo que se. Y como sabes si lo que se ha copiado es seguro de una selección??? No se no se. Siguiendo este tema se puede poner un identificador propio que te indique si la selección es tuya (algún código único o algo).

Pienso lo que Ximorro. Algo general es casi imposible a primera vista.

Si lo que quieres es saber si algún texto está seleccionado va a ser muy muy muy dificil. Otra cosa es que quieras saber lo si se copia esa selección.

Saludos.

Re: comprobar selección de texto

Publicado: 26 Nov 2010, 21:43
por Jonny
Hola

Bueno, sí; a un texto en general, aunque no haya cursor. Es cierto, que puede hacerse también con el ratón...

Efectivamente, quería comprobar que se seleccionara algo en general. texto, archivos en un directorio... lo que sea.

Pero no debe ser tan difícil ¿no? quitando en aplicaciones en las que la interfaz esté hecha a base de imágenes (No necesito saber que imágen o parte de esta se ha seleccionado), esté dibujada directamente con GDI o aplicaciones Java, donde no hay controles estándar, lo normal es que una aplicación contenga controles, sea cual sea: edits, checkbox, listas...
Incluso el escritorio por ejemplo, contiene un control

¿no hay alguna manera para comprobar la selección del texto/item de un control, aunque sea haciendo la comprobación control por control?

Total, que me conformo con saber qué hay seleccionado en un control que sea reconocible por AutoIt o las APIS de windows.

Salu2!

Re: comprobar selección de texto

Publicado: 29 Nov 2010, 09:35
por Ximorro
Yo digo que la copia la haga la propia aplicación, así seguro que estás copiando lo que está seleccionado, si hay algo. Luego hay que restaurar lo que había, claro.

Puede copiar cosas que no sean texto, por ejemplo si tienes una imagen seleccionada en Writer, pero hay funciones para saber qué tipo de objeto se ha copiado en el portapapeles. Puedes que eso no haga falta, porque las funciones básicas de portapapeles de AutoIt sólo trabajan con texto, así que si no hay texto copiado es que no hay texto seleccionado (claro que con las funciones básicas no puedes restaurar el portapapeles con otros objetos que no sean texto).

Y sí, puedes mirar los controles estándar de Windows, tú mismo, ve programando y poco a poco vas ampliando hasta que tengas todos los que puedas. Puedes mirar los controles y cuando no tengas contemplado ese tipo hacer lo del clipboard, por si por ahí te lo soluciona, en cualquier caso por ejemplo en programas Java o Flash sólo te valdrá lo del clipboard.

Por ejemplo para controles Edit, los más típicos, tienes la udf GuiEdit.au3. Ahí tienes una función (_GUICtrlEdit_GetSel) que te dice dónde está la selección de texto en el control.

Re: comprobar selección de texto

Publicado: 29 Nov 2010, 13:35
por Jonny
Hola

sí, creo que empezaré a hacerlo con controles estándar, e iré metiéndome poco a poco con java, flash...

Por cierto ¿Donde puedo ver todos los controles que maneja Windows?, ¿o no hay más de los que maneja AutoIt?.

Salu2!