在 Powerpoint 打开时运行屏幕保护程序

在 Powerpoint 打开时运行屏幕保护程序

我有一面 16 显示器宽的显示墙。它们都是 42 英寸的液晶电视。它们都在同一台计算机上运行。它们都运行 powerpoint,并且具有完全相同的轮廓/设计,但 powerpoint 上的信息各不相同。我想在指定时间后未检测到任何用户输入时打开屏幕保护程序。我有一个程序,我将其编程为打开自定义屏幕保护程序,运行特定时间,然后关闭。

我遇到的问题是要么创建一个可以检测无用户输入的程序,要么从任务计划程序运行它。由于 ES_DISPLAY_REQUIRED,Microsoft 使得计算机无法空闲或打开屏幕保护程序。

有没有办法从注册表中禁用整个计算机的 ES_DISPLAY_REQUIRED 函数。或者也许有办法读取屏幕保护程序超时函数并在我运行的程序中调用该函数。也就是说,尽管 ES_DISPLAY_REQUIRED 阻止屏幕保护程序启动,但屏幕保护程序的倒计时仍然运行,并且当倒计时到零时我的程序运行。

我之所以要这样做,是因为尽管它们都是 LCD 电视,但我想防止显示器烧屏,它们都会在晚上关闭,每天只运行 12 小时,但我宁愿谨慎行事,也不愿冒着损坏非常昂贵的电视的风险。有没有第三方软件可以做到这一点?特别是针对多显示器应用程序。

另外补充一下,我正在运行 3 个 AMD FirePro W600 显卡,并且有 Display Fusion 软件来提供额外的支持功能。

答案1

这不是一个完整的答案,但您可以使用编程方式控制 ES_DISPLAY_REQUIRED 执行状态SetThreadExecutionState()

来自MS的更多信息:SetThreadExecutionState 函数

例子:

// Television recording is beginning. Enable away mode and prevent
// the sleep idle time-out.
//
SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_AWAYMODE_REQUIRED);

//
// Wait until recording is complete...
//

//
// Clear EXECUTION_STATE flags to disable away mode and allow the system to idle to sleep normally.
//
SetThreadExecutionState(ES_CONTINUOUS);

StackOverflow 上的相关信息:https://stackoverflow.com/questions/4964302/programmatically-reset-windows-xp-idle-time

相关内容