Python阻止键盘写入

2024-04-20 09:13:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图找到一种方法:

  • 收听键盘上的“结束”按钮
  • 防止键盘在屏幕上书写

在我的研究中,我发现了这个

1)在windows上阻止键盘的BlockInput(我尝试了,但没有成功)

import ctypes
from ctypes import wintypes

BlockInput = ctypes.windll.user32.BlockInput
BlockInput.argtypes = [wintypes.BOOL]
BlockInput.restype = wintypes.BOOL

blocked = BlockInput(True)
if blocked:
    try:
        pass # do something
    finally:
        unblocked = BlockInput(False) # unblock in any case
else:
    raise RuntimeError('Input is already blocked by another thread!')

2)PyHook(不受更多支持的旧库)

import pythoncom, pyHook 

def uMad(event):
    return False

hm = pyHook.HookManager()
hm.MouseAll = uMad
hm.KeyAll = uMad
hm.HookMouse()
hm.HookKeyboard()
pythoncom.PumpMessages()

是否有其他解决方案(赢得10分)


Tags: 方法importfalse键盘ctypes按钮boolpyhook
2条回答

您可以从下面的链接安装PyHook for Python 3.7 64位或32位

https://www.lfd.uci.edu/~gohlke/pythonlibs/

然后按CTRL+F组合键并搜索以下内容

pyHook‑1.5.1‑cp37‑cp37m‑win_amd64.whl pyHook‑1.5.1‑cp37‑cp37m‑win32.whl

转到cmd并键入pip install,后跟pyhook文件的路径。例如:

C:\user\download\pyHook-1.5.1-cp37-cp37m-win32.whl

Try the keyboard module。它有一些方法,可以让你在按下某个特定的键之前阻止键盘,永远阻止它,并监听按下的键

上面链接的键盘页面中的一些示例

# Blocks until you press esc.
keyboard.wait('esc')

# Record events until 'esc' is pressed.
recorded = keyboard.record(until='esc')

# Block forever, like `while True`.
keyboard.wait()

相关问题 更多 >