在 Windows 中,只要通过媒体播放器播放视频,屏幕保护程序就不会启动。我有一个在数字标牌系统上运行的 WPF 技术动画,我正在寻找使 Windows 的行为与在媒体播放器中播放视频时类似的方法(无需激活屏幕保护程序等)。
暴力解决方案有效,例如发送键盘事件或鼠标移动事件,如以编程方式中断活动的屏幕保护程序?。然而,这些都是非常困难的解决方法。
我假设有一条特殊消息(如 WM_ACTIVATE)要通过 Windows32 API 发送到 Windows 消息队列,同时播放视频或动画以通知操作系统。 Google 并检查 winuser.h 没有产生结果。有人有想法吗?非常感谢!
感谢您对如何解决问题的评论
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);
}