首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用python的键盘模块阻止特定的键盘键?

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

Stack Overflow用户
提问于 2021-11-10 23:18:31
回答 1查看 116关注 0票数 0

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

我使用tkinter在全屏显示黑屏,除非你输入密码或插入物理安全密钥,否则无法将其从全屏中删除。但我意识到,当人们看到这一点时,只会按下Windows键并关闭窗口。

因此,我想尝试使它,以便我可以暂时禁用特定的键,如ALT,DEL,CTRL和所有的功能键,这样它就不能用键盘快捷键关闭。我还意识到,人们可以使用物理开关直接关闭我的PC。我确实想保持所有的关键字母,数字,符号和大写锁定启用,以便用户可以键入密码。

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

如果有人能帮上忙,我将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-12 01:45:28

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

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

代码语言:javascript
运行
复制
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函数。(示例:等待单元输入您的物理安全密钥)

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

代码语言:javascript
运行
复制
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()

如果这真的是工作中的一个大问题,我建议设置一个按键记录器,看看是否有人真的在弄乱你的电脑,并将其报告给你的老板。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69921349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档