如何判断屏幕是否自动息屏呀

使用问题 · 1526 次浏览
wsaddd 创建于 2023-03-22 21:49

目前用的事件触发里面的 设备闲置超过一定时间后运行某动作, 主要是用作无人值守的操作, 设置的30分钟

 

自动息屏设置的是10分钟

 

有些时候在看电影,连续看超过30分钟就会触发动作,可是屏幕也不会息屏

 

有没有什么办法判断屏幕息屏后触发动作呢


回复内容
CL 2023-03-22 22:50
#1

一个思路是触发以后检测一下是不是真的息屏了,如果没有就直接结束动作。

c# 如何判断电脑息屏了

在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,则计算机可能已经进入了睡眠或休眠状态。

CL 最后更新于 2023-03-22 22:50
wsaddd 2023-03-23 08:11
#2
异常:Method *.Exec(Quicker.Public.StepContext) cannot be found.
在 CSScriptLibrary.AsmBrowser.FindMethod(String methodName, Type[] args) 在 CSScriptLibrary.AsmBrowser.GetMethodInvoker(String methodName, Object[] list) 在 CSScriptLibrary.AsmHelper.GetStaticMethod(String methodName, Object[] list) 在 Quicker.Domain.Actions.X.BuiltinRunners.Other.RunCsScriptStep.r9BrGp9Avak(ActionStep , ActionExecu
步骤(sys:csscript)执行失败,原因:Method *.Exec(Quicker.Public.StepContext) cannot be found.
停止动作:Method *.Exec(Quicker.Public.StepContext) cannot be found.
耗时:69ms

提示错误了




CL 最后更新于 2023-03-23 08:25
CL 回复 wsaddd 2023-03-23 08:25 :

上面是GPT给出的答案,不过看起来只是判断是不是正在运行屏保。用的话是这样写:


这个看起来并不能检测到显示器是否真的息屏了。 我搜索了一下似乎没有很直接的代码可以。

可以考虑动作触发以后增加一个几秒钟的等待按键,如果按键了就退出动作,否则就继续执行目标操作。

wsaddd 2023-03-23 09:02
#3

这个确实有点复杂。可否判断,目前是否播放声音,如果有声音肯定是在看电影

CL 回复 wsaddd 2023-03-23 09:06 :

可以试试参考这个子程序里的方法获得实时音量:https://getquicker.net/subprogram?id=150043e7-ea81-47a9-47e5-08da210a63ca

臭冬瓜 回复 wsaddd 2023-03-23 09:45 :

用截屏,然后对比图片呢

wsaddd 回复 CL 2023-03-23 09:49 :

这个可以了

wsaddd 回复 臭冬瓜 2023-03-23 09:50 :

息屏后无法找图吧,太复杂了

回复主贴