我正在尝试用 Python 编写一个程序,该程序可以识别何时显示警报框/对话框。它正在处理多个监视器,我希望它在任务栏图标闪烁、弹出错误/通知等时在辅助监视器上显示可视化效果。
据我所知,检测这些事件的方法是使用消息挂钩,如下所述:http://msdn.microsoft.com/en-us/library/ms632589%28v=vs.85%29.aspx http://msdn.microsoft.com/en-us/library/ms632589%28v=vs.85%29.aspx
我什至很幸运地找到了一个从 Python 访问 SetWindowsHookEx 函数的示例。 (这个特定的示例使用鼠标信号,但我可以更改常量来监听不同的消息)。
然而,上面的例子不起作用。无论我如何单击鼠标,回调函数都不会被调用,并且鼠标中键单击不会导致程序退出。
该示例来自 2009 年(Windows 7 之前的版本?),尽管我不知道这是否是问题所在。
所以,我的问题是,任何人都可以1.找出代码工作的原因,或者2.告诉我另一种方法来实现我正在做的事情(最好是用Python,尽管如果需要的话我会使用其他语言)。
Edit:是否可以使用 WMI 执行我想要的操作?我不太了解WMI,但我知道它确实有非常好的Python 接口。
除 WH_KEYBOARD_LL 和 WH_MOUSE_LL 之外,Windows 挂钩必须在 Windows 注入每个应用程序进程的 DLL 中实现。因此,您不能简单地在程序中实现回调并期望 Windows 运行它。
我可以想到两种方法来解决这个问题:
用 C 或 C++ 编写一个 DLL,实现挂钩过程并通过某种形式的进程间通信通知主程序。然后在主程序中加载该 DLL,并将其模块句柄和该 DLL 中实现的挂钩过程传递给 SetWindowsHookEx。
SetWinEventHook 函数可能会给你你想要的。 WinEvent 挂钩可以在主程序中实现。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)