我正在尝试用wxpython编写一个时间管理工具,它理想上是非突兀的,而且非常不受欢迎。到目前为止,应用程序可以正常使用,并在使用期间最小化到系统托盘。
但是,我注意到,一旦帧没有对焦,就像它的“图标化”时一样,当帧/应用处于对焦状态时正常工作的鼠标和键盘陷阱将不再工作。
我知道我可以编写一个C++程序来创建一个消息队列钩子并捕获OS级别的所有鼠标和键盘事件,但是我不想卷起我的袖子。毕竟,为了避免弄脏我的手,我首先用wxpython编写ui:)
最佳答案
你真的需要鼠标和键盘事件吗?或者仅仅知道用户是否空闲就足够了吗?(你提到了一个时间管理应用,所以这看起来是可行的。)
此代码将在Windows上运行并返回空闲时间(秒)。
from ctypes import Structure, windll, c_uint, sizeof, byref
class LASTINPUTINFO(Structure):
_fields_ = [
('cbSize', c_uint),
('dwTime', c_uint),
]
def get_idle_duration():
lastInputInfo = LASTINPUTINFO()
lastInputInfo.cbSize = sizeof(lastInputInfo)
windll.user32.GetLastInputInfo(byref(lastInputInfo))
millis = windll.kernel32.GetTickCount() - lastInputInfo.dwTime
return millis / 1000.0
关于windows - wxPython-在没有窗口焦点的情况下捕获鼠标和键盘事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1083178/