如何使用 python 的键盘模块阻止特定的键盘按键?
How can I block specific keyboard keys using python's keyboard module?
我一直在尝试在 Windows 10 上制作一个程序,当我离开我的屏幕时,它会阻止人们使用我的屏幕。我知道开始菜单中有“锁定”选项,但我的公司出于某种原因禁止使用它。
我已经使用 tkinter 制作了全屏黑屏,除非您输入密码或插入物理安全密钥,否则无法退出全屏。
但我意识到,人们看到这个后,只会按下 windows 键并关闭 window。
所以我想尝试制作它,以便我可以暂时禁用特定键,如 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()
如果这真的是工作中的大问题,我建议设置一个键盘记录器,看看是否有人真的在弄乱你的电脑,并向你的老板报告。
我一直在尝试在 Windows 10 上制作一个程序,当我离开我的屏幕时,它会阻止人们使用我的屏幕。我知道开始菜单中有“锁定”选项,但我的公司出于某种原因禁止使用它。
我已经使用 tkinter 制作了全屏黑屏,除非您输入密码或插入物理安全密钥,否则无法退出全屏。 但我意识到,人们看到这个后,只会按下 windows 键并关闭 window。
所以我想尝试制作它,以便我可以暂时禁用特定键,如 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()
如果这真的是工作中的大问题,我建议设置一个键盘记录器,看看是否有人真的在弄乱你的电脑,并向你的老板报告。