[Python-es] simular teclado.
Dani
dani.berzas en gmail.com
Jue Dic 6 19:57:40 CET 2007
Hola otra vez...
me estoy metiendo en un berenjeral...
he encontrado gente con problemas parecidos en otros idiomas[1].
y estoy dándole vueltas a win32api, WMI, COM... pero todavía nada.
Tim Golden parece que ha desarrollado lo que estoy buscando, una WMI [2]
basado en win32 extensions from Mark
Hammond<http://starship.python.net/crew/mhammond/>y uno de los
ejemplos es clavadito a lo que quiero:
c = wmi.WMI ()
pid, result = c.Win32_Process.Create (CommandLine="notepad.exe")
for p in c.Win32_Process (ProcessId=pid):
p.Terminate ()
El problema es que no se comunica con el proceso. Si a partir de ese PID me
pudiera comunicar con el proceso sería fantástico.
Los objetos tipo Shell si tienen la función SendKeys,
import win32com.client
shell = win32com.client.Dispatch("WScript.Shell")
shell.AppActivate("Command Prompt")
shell.SendKeys("cls{ENTER}")
shell.SendKeys("dir{ENTER}")
shell.SendKeys("echo Hi There{ENTER}")
pero no se como 'contactar' con un proceso por el PID
[1] http://mail.python.org/pipermail/python-list/1999-May/003244.html
[2] Windows Management Instrumentation (WMI)
>
> > 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/
> Tengo una duda con esto,
>
> el problema es, ¿cómo detectar las pulsaciones del teclado? o ¿cómo
> enviarlas?
Es enviarlas. Realmente no hay teclado, lo que quiero es que un programa
python haga 'como que pulsa las teclas'.
> > 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.
Si acabo trabajando con Linux, dios quiera que sea pronto, no necesitaré
hacer semejantes cábalas de hacerme pasar por el teclado; simplemente
usaremos programas que corren en linea de comandos o con los que uno se
puede comunicar de una forma razonable.
>
> > Veo solución a tu problema, pero no una solución portable. :-(
je je je, me vale con que sea una solución 'potable'.
>
> >
> >> Gracias.
> >>
> >
> > Espero que las merezca ;-)
> >
las merece, gracias otra vez
>
> > Salud y verduras:
> >
> > Javi
salud y a ver si nos vemos en un domingo verde, ;-)
Más información sobre la lista de distribución Python-es