PDA

Ver la Versión Completa : Desarrolo de un teclado virtual como el de windows


ALMERA
10-04-2008, 19:10:41
Hola, me he propuesto ha realizar un teclado virtual como el de windows desarrollandolo en delphi y me he encontrado con un gran problema, se como mandar mensajes de la tecla pulsada con el ratón a cualquier edit de las ventanas externas (donde parpade el cursor para poder escribir), el gran problema viene que cuando pulso el boton de la tecla "a" por ejemplo para escribir una "a", mi formulario donde está el teclado virtual toma el foco y ya no me manda la tecla "a" a donde yo quiero, sino que lo manda a mi ventana, mi solución pasaría por tener un formulario que no tenga foco, pero no tengo ni idea de como conseguir esto, mi teclaso virtual funciona muy bien si lo aplico en los edit y ventanas de mi propia aplicación pero no con cualquier ventana que tenga abierta de windows, por ejemplo con el notepad, he leido por hay como hacerlo si conozco el nombre de la ventana donde quiero escribir, pero este no es el caso, yo necesito que sea cualquier ventana y no una que yo conozca.

Si alguién me puede ayudar ....

Mil gracias.

Northern
10-04-2008, 20:32:40
Mira este enlace: http://delphi.about.com/od/adptips2004/a/bltip1104_3.htm

Bájate la unit SndKey32.pas (si no la tienes).

Abre el Bloc de notas y en un button de tu aplicación pon este código y tendría que funcionar:


AppActivate('Sin título - Bloc de notas');
SendKeys('abc123{left}{left}{left}def{end}456{left 6}ghi{end}789', True);


Si quieres enviar a otra ventana puedes usar el nombre de la ventana o el handle.


Saludos

ALMERA
11-04-2008, 11:44:24
Muchas gracias, funciona pero no es lo que yo busco, prueba usar el teclado virtual de windows, si esta el cursor en el bloc de notas o en cualquier sitio de cualquier ventana donde se pueda escribir, al pinchar una tecla en el teclado virtual, la ventana donde está parpadeando el cursor nunca pierde el foco, sin embargo el teclado virtual manda el mensaje de pulsado de tecla a donde se encuentre el edit, y como nunca pierde el foco original, le da igual como se llame la ventana donde queramos escribir por lo que vale para todas las ventanas y todos los edits que pueda haber en dicha ventana, yo pienso que la solución buena a esto sería tener un form especial que no tenga foco, que tu pulses un boton de dicho form y que el cursor siga en el lugar original porque nunca pierde el foco.

Muchisimas gracias por molestarte en aportar esta información, aunque no sea lo que busco exactamente todo suma, haber si alguién puede aportar una idea nueva ya que me parece un tema interesante.

Mil gracias.