Din*_*ngo 5 windows-7 sleep events task-scheduler
我正在尝试使人洞周围的灯光自动化,理想情况下,只要计算机屏幕打开,并且屏幕保护程序启动时灯光熄灭,我就希望灯光一直亮着,而不使用任何额外的驻留软件。
到目前为止,我设法捕获了事件 4802(屏幕保护程序启动)和 4803(屏幕保护程序停止)并使用任务调度程序和 curl 脚本向处理灯的机器发出 http 请求,并且在一定程度上可以正常工作。
问题是,每当机器进入低功耗状态时,屏幕保护程序都会被杀死并记录 4803,我无法区分屏幕保护程序被用户输入杀死还是窗口进入低功率状态。
基本上我需要捕捉屏幕关闭和打开时发生的一些事件。有什么东西(在通用的 win7 安装中)我可以完成任务吗?
谢谢。
编辑:
我向已经回答过这个问题的人道歉,我的问题表述得不够清楚。有问题的机器实际上并未进入睡眠状态,因此事件日志中没有生成事件 42(内核电源)或事件 1(电源故障排除程序),机器仅进入某种低功耗状态,消耗大约53W,而不是通常的 180W,虽然我可以用它来跟踪这台特定机器的电源状态,但我无法对房间里的其他 3 台计算机使用相同的检测方法,因为它们没有所需的硬件 (UPS) 连接到它们。
我正在寻找的是,由于 Windows 电源管理,当计算机的显示器通过 Windows(而不是通过它们各自的电源按钮)关闭和重新打开时发生的事件。基本上任何可以让我将洞穴中的灯光与监视器的状态同步并允许任务调度程序触发操纵灯光的脚本的任何东西。
小智 3
希望您现在已经找到了此任务的另一个解决方案,无论哪种方式,这都是我想尝试解决的一个有趣的问题,也许其他人会受益。\n我的解决方案不是尝试监视屏幕保护程序状态,而是使用“ \n虽然这是在 Windows 10 上构建的,但我相信使用的功能在 W7 中应该是相同的。
\n\n将 powershell 可执行文件复制到新文件夹中:
\n\n"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe" >>>> C:\\scripts\\dimlights\\\nRun Code Online (Sandbox Code Playgroud)创建“Idle.ps1”并粘贴到脚本中。在脚本的第一行,指定包含脚本和 powershell.exe 副本的文件夹:
\n\n$myScriptDir = "C:\\scripts\\dimlights\\"\n#============= Variables ==================\n$logfile = join-path $myScriptDir log.txt\n$nid = (Get-Process explorer).Id\n$mydate = Get-date\n\n#============= Code ==================\nstart-process powershell.exe -argumentlist "-NonInteractive \xe2\x80\x93ExecutionPolicy Bypass -file $myScriptDir\\watcher.ps1"\necho "$mydate - PID: $nid - Idle start action" | out-file -Append $logfile\n#----------------Insert chosen action code here----------------\nWait-Process $nid\nRun Code Online (Sandbox Code Playgroud)\n\n$mydate = Get-date\necho "$mydate - PID: $nid - 空闲中的最后一行,不应到达。" | 输出文件-附加$logfile
在同一文件夹中创建“Watcher.ps1”并粘贴到脚本中,再次指定文件夹:
\n\n$myScriptDir = "C:\\scripts\\dimlights\\"\n#============= Variables ==================\n$myPSPath = join-path $myScriptDir powershell.exe\n$logfile = join-path $myScriptDir log.txt\n$nid = (Get-Process powershell | Where-Object {$_.path -eq $myPSPath}).id\n$mydate = Get-date\n\n#============= Code ==================\necho "$mydate - PID: $nid - Watcher started" | out-file -Append $logfile\nif ($nid -ne $null){\nWait-Process -id $nid\n$mydate = Get-date\necho "$mydate - PID: $nid - Watcher end action" | out-file -Append $logfile\n#---------------- Insert chosen wake up action code here ----------------\n}\nelse {\necho "$mydate - PID: $nid - No such process, exiting watcher." | out-file -Append $logfile\nRun Code Online (Sandbox Code Playgroud)\n\n}
以管理员身份打开任务计划程序并创建“空闲”任务;
\n\n添加以下参数,将文件路径替换为您自己的文件路径:
\n\n-ExecutionPolicy绕过-文件“C:\\scripts\\idle.ps1”
转到条件选项卡并选中仅在空闲时启动的框,将空闲时间设置为您选择的超时。
希望有人觉得这很有用!
\n\n蒂姆
\n| 归档时间: |
|
| 查看次数: |
2005 次 |
| 最近记录: |