【发布时间】:2011-06-23 18:21:20
【问题描述】:
我正在尝试用 Python 编写一个程序,该程序知道何时显示警报框/对话框。它正在处理多个监视器,我希望它在任务栏图标闪烁、错误/通知弹出等时在辅助监视器上显示可视化。
据我所知,检测这些事件的方法是使用消息挂钩,如下所述:http://msdn.microsoft.com/en-us/library/ms632589%28v=vs.85%29.aspx
我什至有幸找到了一个从 Python 访问 SetWindowsHookEx 函数的示例。 (此特定示例使用鼠标信号,但我可以更改常量以侦听不同的消息)。 http://www.python-forum.org/pythonforum/viewtopic.php?f=2&t=11154
但是,上面的示例不起作用。无论我的鼠标点击如何,回调函数都不会被调用,并且鼠标中键不会导致程序退出。
该示例来自 2009 年(Windows 7 之前的版本?),尽管我不知道这是否是问题所在。
所以,我的问题是,任何人都可以 1. 找出代码工作的原因,或者 2. 告诉我另一种方法来实现我正在做的事情(最好是在 Python 中,但如果需要,我会使用其他语言) .
编辑: 是否可以使用 WMI 做我想做的事情?我不太了解 WMI,但我知道它确实有很好的 Python 接口。
【问题讨论】:
-
该示例中的 WH_MOUSE_LL 钩子是一种特殊情况,它不需要注入到进程中才能工作;回调可以在调用模块中,但是对于 CBT 挂钩,回调必须托管在 DLL 中。
-
有关 Python 中出色的 WH_KEYBOARD_LL 示例(就像 WH_MOUSE_LL - 不需要 DLL),请参阅:stackoverflow.com/questions/9817531/…
标签: python windows winapi events pywin32