WPF 动画不应被屏幕保护程序打断

问题描述 投票:0回答:1

在 Windows 中,只要通过媒体播放器播放视频,屏幕保护程序就不会启动。我有一个在数字标牌系统上运行的 WPF 技术动画,我正在寻找使 Windows 的行为与在媒体播放器中播放视频时类似的方法(无需激活屏幕保护程序等)。

暴力解决方案有效,例如发送键盘事件或鼠标移动事件,如以编程方式中断活动的屏幕保护程序?。然而,这些都是非常困难的解决方法。

我假设有一条特殊消息(如 WM_ACTIVATE)要通过 Windows32 API 发送到 Windows 消息队列,同时播放视频或动画以通知操作系统。 Google 并检查 winuser.h 没有产生结果。有人有想法吗?非常感谢!

c# winapi video
1个回答
0
投票

感谢您对如何解决问题的评论

SetThreadExecutionState
。我的解决方案现在如下所示(在测试类中),并且我已在当前的 Windows 10 Enterprise 和 Windows 11 Pro 上对其进行了测试。

private enum ExecutionState : uint
{
    EsContinuous = 0x80000000,
    EsDisplayRequired = 0x00000002,
    EsSystemRequired = 0x00000001
}

[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern uint SetThreadExecutionState(ExecutionState esFlags);

public void Test()
{
    SetThreadExecutionState(
        ExecutionState.EsContinuous
        | ExecutionState.EsDisplayRequired
        | ExecutionState.EsSystemRequired);
} 
© www.soinside.com 2019 - 2024. All rights reserved.