目前用的事件触发里面的 设备闲置超过一定时间后运行某动作, 主要是用作无人值守的操作, 设置的30分钟
自动息屏设置的是10分钟
有些时候在看电影,连续看超过30分钟就会触发动作,可是屏幕也不会息屏
有没有什么办法判断屏幕息屏后触发动作呢
一个思路是触发以后检测一下是不是真的息屏了,如果没有就直接结束动作。
在C#中,可以使用SystemParametersInfo函数来检测电脑的屏幕保护程序是否启动并导致屏幕变暗,从而指示计算机是否处于空闲状态,从而判断计算机是否已经进入了睡眠或休眠状态。
以下是使用SystemParametersInfo函数的示例代码:
using System.Runtime.InteropServices; public static class ScreenSaver { private const int SPI_GETSCREENSAVERRUNNING = 114; [DllImport("user32.dll")] private static extern bool SystemParametersInfo(int uAction, int uParam, ref bool lpvParam, int flags); public static bool IsScreenSaverRunning() { bool isRunning = false; SystemParametersInfo(SPI_GETSCREENSAVERRUNNING, 0, ref isRunning, 0); return isRunning; } }
; } }
在上面的代码中,IsScreenSaverRunning方法返回一个布尔值,指示屏幕保护程序是否正在运行。如果返回true,则计算机可能已经进入了睡眠或休眠状态。
上面是GPT给出的答案,不过看起来只是判断是不是正在运行屏保。用的话是这样写:
这个看起来并不能检测到显示器是否真的息屏了。 我搜索了一下似乎没有很直接的代码可以。
可以考虑动作触发以后增加一个几秒钟的等待按键,如果按键了就退出动作,否则就继续执行目标操作。
这个确实有点复杂。可否判断,目前是否播放声音,如果有声音肯定是在看电影
可以试试参考这个子程序里的方法获得实时音量:https://getquicker.net/subprogram?id=150043e7-ea81-47a9-47e5-08da210a63ca
用截屏,然后对比图片呢
这个可以了
息屏后无法找图吧,太复杂了