1
我想檢測CTRL | SHIFT | ALT在執行python腳本期間是否被按下以改變它的行爲。因此,如果我運行一個腳本與SHIFT按住我想要一個GUI彈出打開,而不是一個命令行...等等...用python ctypes檢測shift-key按
因爲msvcrt.kbhit無法檢測到SHIFT按鍵我做了一些挖掘並發現這個似乎非常有前途的solution。我將SHIFT添加到其熱鍵列表中作爲測試。不幸的是,如果你嘗試下面的代碼在DOS shell中,你會發現它能正確檢測到ESC和NUMLOCK按鍵,但它不會捕獲SHIFT按鍵,我不明白爲什麼。
任何有識之士將不勝感激。
import ctypes, ctypes.wintypes
import win32con
# Register hotkeys
ctypes.windll.user32.RegisterHotKey(None, 1, 0, win32con.VK_ESCAPE)
ctypes.windll.user32.RegisterHotKey(None, 1, 0, win32con.VK_NUMLOCK)
ctypes.windll.user32.RegisterHotKey(None, 1, 0, win32con.VK_LSHIFT)
ctypes.windll.user32.RegisterHotKey(None, 1, 0, win32con.VK_RSHIFT)
# Loop until one of the hotkeys are pressed
try:
msg = ctypes.wintypes.MSG()
while ctypes.windll.user32.GetMessageA(ctypes.byref(msg), None, 0, 0) != 0:
if msg.message == win32con.WM_HOTKEY:
print("KEY PRESSED!")
ctypes.windll.user32.TranslateMessage(ctypes.byref(msg))
ctypes.windll.user32.DispatchMessageA(ctypes.byref(msg))
# Cleanup
finally:
ctypes.windll.user32.UnregisterHotKey(None, 1)