gpt4 book ai didi

python - 如何使用 python Hook Windows 中的事件/消息

转载 作者:太空狗 更新时间:2023-10-29 20:30:58 33 4
gpt4 key购买 nike

简而言之:

我想拦截笔记本电脑上的暂停/待机消息,但我的程序没有收到所有相关消息。

背景:

在 windows xp/2k 上的 ms-excel 中有一个错误,如果在网络/USB 驱动器上打开文件,它会阻止系统挂起。

我正在尝试以编程方式解决它(我的工具箱包括 python、vb6 或命令行工具)。

我对 Windows 工具一无所知:-)

我有一个 sysinternals 实用程序,可以以任何方式暂停系统。我想将它与合盖事件 Hook !

长:

笔记本合上盖子(fujitsu u810)启动待机程序[如何?]

系统然后向每个人发送 WM_POWERBROADCAST:PBT_APMQUERYSUSPEND(我可以使用 SPYXX.EXE 跟踪他们)

每个程序都回答“True”,直到 excel 回答“false”,整个​​过程停止。

我的问题:

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)有没有别的办法拦截待机进程?

在一个完美的世界里,我会设置盖子关闭事件来运行我选择的命令。在一个完美的世界中,盖子关闭是一个记录在案的事件。

谢谢大家:-)

最佳答案

我找到了一个丑陋的解决方法:我写了一个AutoIt检测 Excel 错误 MessageBox 的脚本,关闭它,并运行 sysinternals 的实用程序,强制计算机进入待机状态。

Opt("WinWaitDelay",400); -- exact text match, to save LOTS of cup cycles!Opt("WinTitleMatchMode",3)Opt("WinDetectHiddenText",1)Opt("MouseCoordMode",0); Opt("WinSearchChildren",1)dim $title = "Microsoft Excel"dim $text = "Windows cannot go on standby because Microsoft Office documents or application components are being accessed from the network. You must close the open documents or exit the applications before you can put the computer on standby."While True     ; wait for excel's error msg     WinWait($title, $text)     Run("psshutdown.exe -c -d -accepteula -m mooshmoosh -t 5")     ; the annoying msgbox doesn't close without the 'sleep'     Sleep(1000)     ; close the annoying modal msgbox!     WinClose($title)     ;1 minute delay, save cpu (?)     Sleep(1*60*1000)WEnd

(这是一个优化版本 - 第一次试验是 CPU 密集型)。
现在它位于系统托盘中并且可以正常工作。

丢失消息的问题仍然悬而未决。尽管我首先意识到它与 python 无关。

关于python - 如何使用 python Hook Windows 中的事件/消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/694475/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com