import ctypes
def mouse_released() -> bool:
mouse_state = ctypes.windll.user32.GetAsyncKeyState(0x01)
if mouse_state:
while ctypes.windll.user32.GetAsyncKeyState(0x01):
continue # is pressing
else:
print('released')
return mouse_state != 0 # released
return False
while True:
mouse_released()
该程序告知鼠标左键是否被释放。
问题:一般来说它工作正常。但有时一开始它会打印“已释放”,即使几秒钟前没有按下任何按钮。
我尝试用
GetAsyncKeyState
更改 GetKeyState
。它似乎解决了提到的问题,但是这样,该函数指示仅每秒按下一次按钮,这对我来说完全是个谜。
考虑到所有的评论,这是我想出的工作方法:
from win32api import GetKeyState
def mouse_released():
pressed = GetKeyState(0x01) < 0
if pressed:
while GetKeyState(0x01) < 0:
continue # Wait until the button is released
return pressed