繁体   English   中英

如何使用python的键盘模块阻止特定的键盘键?

[英]How can I block specific keyboard keys using python's keyboard module?

我一直在尝试在 Windows 10 上制作一个程序,当我离开屏幕时阻止人们使用我的屏幕。 我知道开始菜单中有“锁定”选项,但我的公司出于某种原因阻止了它的使用。

我已经使用 tkinter 在全屏中制作了一个黑屏,除非您输入密码或插入物理安全密钥,否则无法从全屏中取出。 但我意识到人们看到这一点后只会按下 windows 键并关闭窗口。

所以我想尝试一下,这样我就可以暂时禁用特定的键,比如 ALT、DEL、CTRL 和所有功能键,这样就不能使用键盘快捷键关闭它。 我还意识到人们可以使用物理开关关闭我的电脑。 我确实希望启用所有字母、数字、符号和大写锁定键,以便用户可以输入密码。

我知道用keyboard.block_key()来做这件事的方法,但我不知道把什么值放入括号中以仅阻止CTRL、ALT、DEL、SHIFT、Windows键、ESC和所有功能键。 我不确定它是我为键代码/ID 输入的整数还是我输入的字符串。

如果有人可以提供帮助,将不胜感激!

我认为使用 python 程序阻止特定键是不可能的。

对此有一种不同的方法,您可以运行time.sleep函数来暂时禁用键盘。

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!')

上面是我为在 Windows 上阻止键而编写的示例程序。 您可以将其替换为您想要执行的操作的代码,而不是pass函数。 (例如:等待单位输入您的物理安全密钥)

这是一种不同的方法,以后更容易添加:

import time
class keyboardDisable():

    def start(self):
        self.on = True

    def stop(self):
        self.on = False

    def __call__(self): 
        while self.on:
            msvcrt.getwch()


    def __init__(self):
        self.on = False
        import msvcrt

disable = keyboardDisable()
disable.start()
time.sleep(10)
disable.stop()

如果这真的是工作中的一个大问题,我建议设置一个键盘记录器来查看是否有人真的在弄乱您的计算机并将其报告给您的老板。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM