Windows 如何使用window';是否在屏幕保护程序打开时检测批处理文件?

Windows 如何使用window';是否在屏幕保护程序打开时检测批处理文件?,windows,batch-file,windows-10,windows-screensaver,Windows,Batch File,Windows 10,Windows Screensaver,如何编写一个批处理程序来确定屏幕保护程序是否正在运行,用户是否进入睡眠状态,或者是否锁定了计算机 在Ubuntu Linux的bash中,我使用代码:/gnome屏幕保护程序命令-q | grep“处于活动状态”来确定屏幕保护程序是否正在运行 注意:我不是在寻求书籍、工具、软件库的推荐 除非有更好的方法,否则我将使用此脚本查找正在运行的进程。但我必须找到屏幕保护程序进程的名称 @echo off set pn=%1 echo looking for %pn% tasklist /FI "

如何编写一个批处理程序来确定屏幕保护程序是否正在运行,用户是否进入睡眠状态,或者是否锁定了计算机

在Ubuntu Linux的bash中,我使用代码:
/gnome屏幕保护程序命令-q | grep“处于活动状态”
来确定屏幕保护程序是否正在运行

注意:我不是在寻求书籍、工具、软件库的推荐

除非有更好的方法,否则我将使用此脚本查找正在运行的进程。但我必须找到屏幕保护程序进程的名称

@echo off
set pn=%1
echo looking for %pn%
tasklist /FI "IMAGENAME eq %pn%" 2>NUL | find /I /N "%pn%">NUL
if %ERRORLEVEL%==0 (
    echo Found program running
) else (
    echo NOT FOUND running  
)

屏幕保护程序进程的名称因运行的屏幕保护程序而异,但它应始终以
.scr
结尾

tasklist | find ".scr" >nul
if %errorlevel% EQU 0 (
    echo Screensaver is running
) else (
    echo Screensaver is not running
)
默认Windows 10屏幕保护程序具有以下进程名称:

3D Text - ssText3d.scr
Blank   - scrnsave.scr
Bubbles - Bubbles.scr
Mystify - Mystify.scr
Photos  - PhotoScreensaver.scr
Ribbons - Ribbons.scr

计算机锁定后,进程
LogonUI.exe
将运行

tasklist | find "LogonUI.exe"
if %errorlevel% EQU 0 (
    echo Computer is locked
) else (
    echo Computer is unlocked
)
@echo关闭
pushd“%\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu%”
标题nul tasklist.exe/svc/fo list | find.exe/i“!\u scr\u svr!”>nul&&(
echo/[!date!^ |!time:~0,8!]屏幕保护程序:正在运行“!\u scr\u svr!”
) || (
echo/[!date!^ |!time:~0,8!]屏幕保护程序:已启用“!\u scr\u svr!”
echo/[!date!^|!time:~0,8!]屏幕保护程序:停止“!\u scr\u svr!”)
)
:下一个
2> nul tasklist.exe/svc/fo list | find.exe/i“LogonUI.exe”>nul&&(
echo/[!date!^|!time:~0,8!]工作站:已锁定“!ComputerName!”
)| | echo/[!date!^ |!time:~0,8!]工作站:已记录“!ComputerName!”
nul超时/t 10/nobreak和goto:循环

1。使用
Reg查询查看屏幕保护程序当前是否已启用

for/f skip^=2tokens^=2*%%i in(
“;2^>nul reg query”!\u reg_Key!/v Screensave Active”)如果%%j eq 1(
2.如果屏幕保护程序当前已启用
,请使用额外的
Reg查询
获取并保存
名称+.扩展名

3.避免在
| find.scr“
中使用部分字符串,并使用
find/i“完整文件”\u Name.scr“
区分大小写和匹配
some\u Name.scr≠≠ Some_Name.SCR
Some_Name.SCR==Some_Name.SCR

  • Obs.1在使用
    任务列表
    查找带有
    |的.scr“
    的任务列表时,名称中的任何字符串也包含字符串
    .str
    (仅小写),无论屏幕保护程序是否正在运行,都会列出该字符串

  • Obs.2如果屏幕保护程序\u long\u name.scr name(包括扩展名)中的字符长度大于25,使用
    任务列表| find.src“
    ,您将永远无法筛选/找到此文件,因为
    任务列表
    (没有任何
    /flag
    )输出中只有26个字符长度(,以结尾。)

  • Obs.:3对于某些屏幕保护程序名称(如
    安全屏幕保护程序NG.scr
    正在运行的列表进程,请使用
    任务列表/svc/fo list

4.使用循环,并保持对循环过程中随时可能发生的任何更改的监控,不断查询注册表值


可能的状态和产出:

  • 屏幕保护程序已启用且未运行,但用户已记录:
[Sun 12/27/2020 | 23:26:17]屏幕保护程序:启用“Fliqlo.scr”
[Sun 12/27/2020 | 23:26:17]屏幕保护程序:停止“Fliqlo.scr”
[Sun 12/27/2020 | 23:26:17]工作站:记录的“跛脚”
  • 屏幕保护程序已启用并正在运行,但工作站已锁定:
[Sun 12/27/2020 | 27:09:07]屏幕保护程序:启用“Fliqlo.scr”
[Sun 12/27/2020 | 27:09:07]屏幕保护程序:运行“Fliqlo.scr”
[Sun 12/27/2020 | 27:09:07]工作站:锁定的“跛子”
  • 启用屏幕保护程序未运行,但用户已记录:
[Sun 12/27/2020 | 25:26:21]屏幕保护程序:启用“Fliqlo.scr”
[Sun 12/27/2020 | 25:26:21]屏幕保护程序:运行“Fliqlo.scr”
[Sun 12/27/2020 | 25:26:21]工作站:记录的“跛脚”
  • 屏幕保护程序已启用但未运行,工作站已锁定:
[Sun 12/27/2020 | 25:15:28]屏幕保护程序:启用“Fliqlo.scr”
[Sun 12/27/2020 | 25:15:28]屏幕保护程序:停止“Fliqlo.scr”
[Sun 12/27/2020 | 25:15:28]工作站:锁定的“跛脚”
  • 屏幕保护程序已禁用
    未运行
    ,但用户已记录:
[Sun 12/27/2020 | 22:51:46]屏幕保护程序:禁用“--”
[Sun 12/27/2020 | 22:51:46]工作站:记录的“跛脚”
  • 屏幕保护程序已禁用
    未运行
    ,但工作站已锁定:
[Sun 12/27/2020 | 22:44:11]屏幕保护程序:禁用“--”
[Sun 12/27/2020 | 22:44:11]工作站:锁定的“跛脚”

  • 限制为10个循环,每个循环10次间隔/超时10秒
@echo关闭
设置/a“_c+=0”
pushd“%\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu%”
标题nul tasklist.exe/svc/fo list | find.exe/i“!\u scr\u svr!”>nul&&(
echo/[!date!^ |!time:~0,8!]屏幕保护程序:正在运行“!\u scr\u svr!”
) || (
echo/[!date!^ |!time:~0,8!]屏幕保护程序:已启用“!\u scr\u svr!”
echo/[!date!^|!time:~0,8!]屏幕保护程序:停止“!\u scr\u svr!”)
)
:下一个
2> nul tasklist.exe/svc/fo list | find.exe/i“LogonUI.exe”>nul&&(
echo/[!date!^|!time:~0,8!]工作站:已锁定“!ComputerName!”
)| | echo/[!date!^ |!time:~0,8!]工作站:已记录“!ComputerName!”
如果_Cleq 9(
设置/a“\u c+=1”&&set“\u scr\u svr=“&&&>nul timeout/t 10&goto:循环

)else popd&&endlocal&&goto:eof
您以前版本的问题被关闭为“寻求推荐”,因为(莫名其妙地)没有关闭的原因