在 Vista 上请求暂停,但允许其他应用程序取消

发布于 2024-08-03 04:44:45 字数 479 浏览 6 评论 0原文

我的应用程序在完成一项冗长的任务后,使用 Win32 SetSuspendState() API 触发系统挂起或休眠。

API 接受参数“ForceCritical”,该参数确定系统是否立即挂起,或者是否首先广播 PBT_APMQUERYSUSPEND 以允许其他应用有机会取消挂起。我的应用程序使用它来与媒体播放器等其他应用程序很好地配合,因此如果您正在听音乐或其他内容,它不会暂停。

由于某种原因,从 Vista 开始,MS 已经改变了一些事情,所以此参数被忽略,因此 SetSuspendState 立即导致挂起,其他应用程序没有机会停止它。

有谁知道我如何才能在 Vista 上再次获得所需的“礼貌”行为?

My application uses the Win32 SetSuspendState() API to trigger system suspend or hibernation when it has finished doing a lengthy task.

The API accepts a parameter "ForceCritical" which determines whether or not the system suspends immediately or whether it broadcasts PBT_APMQUERYSUSPEND first to allow other apps the chance to cancel the suspend. My app uses this to play nicely with other apps like Media Player, so it doesn't suspend if you're listening to music or something.

For some reason, starting with Vista, MS have changed things so this parameter is ignored so SetSuspendState immediately causes a suspend and other applications have no opportunity to stop it.

Does anyone know how I can get the desired "polite" behaviour back again on Vista?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风蛊 2024-08-10 04:44:45

MSDN 说

为了防止系统在 Windows Vista 中转换到低功耗状态,应用程序必须调用 SetThreadExecutionState 来通知系统它正在使用

我猜测 WMP 会这样做,但旧的应用程序不会这样做。您可以通过向所有顶级窗口发送 WM_POWERBROADCAST:PBT_APMQUERYSUSPEND 消息并检查其返回值来模拟这一点(发送超时消息,以便挂起的应用程序不会挂起您的应用程序)

MSDN says

To prevent the system from transitioning to a low-power state in Windows Vista, an application must call SetThreadExecutionState to inform the system that it is in use

I would guess that WMP does this, but older apps don't. You could probably emulate this by sending the WM_POWERBROADCAST:PBT_APMQUERYSUSPEND message to all top level windows and check their return values (Send the message with a timeout so a hung app does not hang your app)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文