Python rileva i tasti inviato a un'altra applicazione
Domanda
Ho un programma Python che invia sequenze di tasti ad un'altra applicazione che utilizza SendKeys. Alcuni dei tasti, tuttavia, deve essere inviato alla applicazione dopo che fa alcune elaborazioni (che richiede una quantità di tempo indeterminato). Finora ho dovuto lasciare che l'applicazione Python conosce il trattamento era finito con Alt + Tabbing di nuovo alla finestra DOS e premendo Invio. Mi piacerebbe avere una combinazione di tasti (Shift + F1 o qualcosa di simile), che posso colpire nell'applicazione ricevente che segnala il programma Python di continuare senza di me dover tornare alla finestra DOS. Come faccio a fare in modo che in grado di rilevare le battiture in Python, anche se l'attenzione è rivolta un'altra finestra?
Soluzione
Dai un'occhiata alla pyHook .
Permette tastiera aggancio:
import pythoncom, pyHook
def OnKeyboardEvent(event):
print 'MessageName:',event.MessageName
print 'Message:',event.Message
print 'Time:',event.Time
print 'Window:',event.Window
print 'WindowName:',event.WindowName
print 'Ascii:', event.Ascii, chr(event.Ascii)
print 'Key:', event.Key
print 'KeyID:', event.KeyID
print 'ScanCode:', event.ScanCode
print 'Extended:', event.Extended
print 'Injected:', event.Injected
print 'Alt', event.Alt
print 'Transition', event.Transition
print '---'
# return True to pass the event to other handlers
return True
# create a hook manager
hm = pyHook.HookManager()
# watch for all mouse events
hm.KeyDown = OnKeyboardEvent
# set the hook
hm.HookKeyboard()
# wait forever
pythoncom.PumpMessages()