Deshabilitar o bloquear el mouse y el teclado en Python?

¿Hay alguna forma de desactivar o bloquear el mouse y el teclado con Python? Quiero congelar el mouse y desactivar el teclado.

No he probado (en realidad he probado la parte del mouse, y funciona de manera molesta) pero algo como esto usando pyhook haría lo que quieras:

import pythoncom, pyHook def uMad(event): return False hm = pyHook.HookManager() hm.MouseAll = uMad hm.KeyAll = uMad hm.HookMouse() hm.HookKeyboard() pythoncom.PumpMessages() 

Para mí, solo dos líneas de progtwigción resolvieron el problema:

 from ctypes import * ok = windll.user32.BlockInput(True) #enable block #or ok = windll.user32.BlockInput(False) #disable block 

He extendido la respuesta de Fábio Diniz a una clase que proporciona funciones de locking () y deslocking () que bloquean (selectivamente) las entradas del mouse / teclado. También agregué una funcionalidad de tiempo de espera que (con suerte) resuelve la molestia de bloquearse.

 import pyHook from threading import Timer import win32gui import logging class blockInput(): def OnKeyboardEvent(self,event): return False def OnMouseEvent(self,event): return False def unblock(self): logging.info(" -- Unblock!") if self.t.is_alive(): self.t.cancel() try: self.hm.UnhookKeyboard() except: pass try: self.hm.UnhookMouse() except: pass def block(self, timeout = 10, keyboard = True, mouse = True): self.t = Timer(timeout, self.unblock) self.t.start() logging.info(" -- Block!") if mouse: self.hm.MouseAll = self.OnMouseEvent self.hm.HookMouse() if keyboard: self.hm.KeyAll = self.OnKeyboardEvent self.hm.HookKeyboard() win32gui.PumpWaitingMessages() def __init__(self): self.hm = pyHook.HookManager() if __name__ == '__main__': logging.basicConfig(level=logging.INFO) block = blockInput() block.block() import time t0 = time.time() while time.time() - t0 < 10: time.sleep(1) print(time.time() - t0) block.unblock() logging.info("Done.") 

Puede echar un vistazo a la rutina principal, por ejemplo, el uso.