Calificación:
  • 1 voto(s) - 1 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Pyhook KeyboardSwitch() error
#1
estoy experimentando con un registrador de teclas:
Código:
def eventoTeclado(event):
       data_key = 'WindowName:'+str(event.WindowName)+ '; Ascii:'+ str(event.Ascii)+" "+ chr(event.Ascii)+ '; Key:'+ str(event.Key)+ '; KeyID:'+ str(event.KeyID)
       print ('WindowName:',event.WindowName)
       print ('Ascii:', event.Ascii, chr(event.Ascii))
       print ('Key:', event.Key)
       print ('KeyID:', event.KeyID)
       print ('ScanCode:', event.ScanCode)
       return True
controlador = pyHook.HookManager()
controlador.KeyDown = eventoTeclado
controlador.HookKeyboard()
pythoncom.PumpMessages()

el código funciona bien en algunas ventanas, pero por ejemplo en el bloc de notas o google me devuelve:

Código:
TypeError: KeyboardSwitch() missing 8 required positional arguments: 'msg', 'vk_code', 'scan_code', 'ascii', 'flags', 'time', 'hwnd', and 'win_name'
he probado con muchas cosas pero no he llegado a nada, probé con pyhook3 y no pude instalarlo, el código funciona perfecto en python2, pero en python3 la biblioteca está defectuosa.
Responder
#2
Si la librería no está portada a Python 3 es normal que surjan todo tipo de errores. Por lo que veo en tu código no estás haciendo ninguna llamada a KeyboardSwitch(), por ende debe ser algún problema de compatibilidad interno de pyHook.

Te dejo un artículo sobre una alternativa que puedes usar para el mismo propósito (en Python 2 y 3): https://recursospython.com/codigos-de-fu...s-y-linux/.
Responder
#3
(17-10-2018, 11:56 PM)Francisco escribió: Si la librería no está portada a Python 3 es normal que surjan todo tipo de errores. Por lo que veo en tu código no estás haciendo ninguna llamada a KeyboardSwitch(), por ende debe ser algún problema de compatibilidad interno de pyHook.

Te dejo un artículo sobre una alternativa que puedes usar para el mismo propósito (en Python 2 y 3): https://recursospython.com/codigos-de-fu...s-y-linux/.

Hola, me pasa exactamente lo mismo, no se puede user por ejemplo except (keyboardSwitch): pass?
Responder
#4
Hola. ¿Podés pegar el código que estás usando y el error completo? Con un except solo vas a lograr que el código no arroje ningún error, pero tampoco funcione.

Saludos
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)