simular teclado.

lasizoillo lasizoillo en gmail.com
Lun Dic 3 01:39:41 CET 2007


Buenas:

El 29/11/07, Dani <dani.berzas en gmail.com> escribió:
> >
> > > Ahora bien, ¿como envío por el PIPE códigos de teclas de función, si se
> > ha
> > > pulsado una flecha o la tecla enter?.
>
>
> Fíjate en el método communicate() de la clase Popen en subprocess.
>

Con este truco puedes enviar datos tal como se enviarian por la
entrada estandar, que normalmente implica recoger cosas de teclado,
pero no lo estas garantizando.

>
>
> Si no lo he entendido mal este método solo trabaja con cadenas. Crea un
> objeto fichero que es la 'entrada' al PIPE hacia la aplicación que se ha
> lanzado con Popen. El probema es que este pipe es tipo texto, y no se como
> mandar los códigos de las teclas de flechas, función, retorno, etc... Creo
> que para eso sería necesario un objeto fichero de tipo binario. Tengo
> entendido que las teclas 'especiales' tienen un código de dos bytes, por
> ejemplo F1 es (0,59), enter es (0,13) y flecha derecha (224,77).
>

Creo que el cómo envie en binario los datos el teclado a su
correspondiente controlador no te va a servir de mucho :-(

Quiza con alguna secuencia de escape... De todas formas yo no perdería
mucho tiempo por ahí.

> El código que más se parece a lo que quiero hacer es SendKeys[1], pero en
> este precisamente la rutina de comunicación con la aplicación está escrita
> en C. Además no se comunica con una aplicación que hayamos lanzado sino con
> la ventana que tiene el control en ese momento.
>

Por lo que he visto, usa el API de windows para simular las
pulsaciones. Y si no te importa usar el API de windows no hay
problemas en usarlo tambien para ganar el foco a la ventana de la
aplicación que has lanzado. Puedes simular tambien el ratón y lo que
haga falta. Pero si vas a usar el API de windows creo que lo más facil
es usar esto http://python.net/crew/mhammond/win32/

> ¿Alguien ha probado algo similar?

Probe hace años python para ayudado del api de windows usar una
aplicación (creo que era con el api del link). El usar ventanitas
desde otro proceso es algo que no te va a permitir las X Windows si
cambias a Linux o FreeBSD. Esa feature es algo que tenia (¿tiene?)
windows para permitir hacer keyloggers y demás troyanos.

Veo solución a tu problema, pero no una solución portable. :-(

> Gracias.

Espero que las merezca ;-)


Salud y verduras:

Javi
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es