【发布时间】:2010-10-16 05:17:10
【问题描述】:
简而言之:
我想在我的笔记本电脑上截获挂起/待机消息,但我的程序没有收到所有相关消息。
背景:
在 windows xp/2k 上的 ms-excel 中有一个错误,如果在网络/USB 驱动器上打开文件,它会阻止系统挂起。
我正在尝试以编程方式解决它(我的工具箱包括 python、vb6 或命令行工具)。
我对 Windows 仪表一无所知 :-)
我有一个 sysinternals 实用程序可以挂起系统。我想把它和闭盖事件挂钩!
长篇:
笔记本盖子关闭(富士通u810)启动待机程序[如何?]
然后系统向所有人发送 WM_POWERBROADCAST: PBT_APMQUERYSUSPEND(我可以使用 SPYXX.EXE 跟踪他们)
每个程序都回答“真”,直到excel回答“假”,整个过程就停止了。
我的问题:
1) 我的 python 程序既没有捕获 pbm_apmquerysuspend,也没有捕获 PBT_APMQUERYSTANDBYFAILED,也没有捕获 PBT_APMQUERYSUSPENDFAILED: ` ...
query = "SELECT * FROM Win32_PowerManagementEvent"
power_watcher = wmi.ExecNotificationQuery ( query )
power_event = power_watcher.NextEvent ()
` 如果最终发生待机,它只接收 PBT_APMSUSPEND。
为什么不 - 以及如何拦截它?
2) 有没有其他方法可以拦截待机进程?
在一个完美的世界中,我会设置盖子关闭事件来运行我选择的命令。 在一个完美的世界里,合盖是一个记录在案的事件。
谢谢大家:-)
【问题讨论】:
标签: python windows wmi power-management