Python ctypes:从不调用SetWindowsHookEx回调函数

我正在尝试用
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年(pre windows 7?),但我不知道这是不是问题.

所以,我的问题是,任何人都可以找到代码工作的原因,或者2.告诉我另一种方法来实现我正在做的事情(最好是在Python中,尽管如果必要的话我会去其他语言).

编辑:是否有可能做我想要的WMI?我不太了解WMI,但我知道它确实有很好的Python界面.

最佳答案 除了WH_KEYBOARD_LL和WH_MOUSE_LL之外,Windows挂钩必须在Windows注入每个应用程序进程的DLL中实现.因此,您不能简单地在程序中实现回调并期望Windows运行它.

我可以想出两种方法来解决这个问题:

>在C或C中编写实现钩子过程的DLL,并通过某种形式的进程间通信通知主程序.然后在主程序中加载此DLL并将其模块句柄和该DLL中实现的钩子过程传递给SetWindowsHookEx.
> SetWinEventHook函数可以为您提供所需的内容. WinEvent挂钩可以在主程序中实现.

点赞