【任务计划程序】实现自动切换性能模式
我的笔记本电脑是小米air13.3指纹版,插上电源的时候性能还可以,勉强能满足我日常开发需求,但是一旦拔掉电源,电脑就会因为供电不足而导致CPU频率降到1GHz以下,这时无论我把电源性能模式设置成高性能模式还是卓越性能模式都不管用。不过当我把它设置为【省电模式】时,CPU频率会正常跑上来,这时电脑的性能虽然相对于插电时会低一些,但是还是远比不插电时其他性能模式会好很多,至少勉强能使用。不会因为性能太低一直卡顿在那里。性能虽然解决了,但是每次拔掉电源都需要我去手动切换一个性能模式,有些许麻烦,所以我想是否能通过任务计划来实现切换自动化,这样体验就会好很多了。通过我稍微的研究,终于“玩”明白了这个任务计划程序。这里记录一下,希望能帮助到一样有这样需求的朋友。
原理
自动化其实跟C#中的事件获取然后触发机制差不多,基本流程是【触发事件捕获】 → 【执行特定操作】
参考资料
这里参考了两位朋友的教程,非常感谢。
任务计划程序设置教程 → 新建任务计划教程
电脑插电断电事件捕获教程 → 电脑插电断电事件捕获教程 这里要纠正一下这位朋友中【拔掉电源事件捕获XML】最后一个闭包字符没写,导致设置后报错。这里贴出完整的XML。
拔掉电源XML:
<QueryList><Query Id="0" Path="System"><Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power'] and (Level=4 or Level=0) and Task = 100 and (EventID=105) and Security[@UserID='S-1-5-18']]] and *[EventData[Data[@Name='AcOnline']='false']]</Select></Query> </QueryList>
接通电源XML:
<QueryList><Query Id="0" Path="System"><Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power'] and (Level=4 or Level=0) and Task = 100 and (EventID=105) and Security[@UserID='S-1-5-18']]] and *[EventData[Data[@Name='AcOnline']='true']]</Select></Query></QueryList>
触发器设置好了之后,新建需要执行的【操作】即可 ↓
【操作】是通过执行windows中的C:\Windows\System32\powercfg.exe + 配置参数( -setactive +电源方案GUID)(★★★ -setactive最前面有空格★★★)即可
电源方案GUID具体可以通过在【cmd】中输入powercfg -L 查看,查询结果例如:
电源方案 GUID: 30e7ee06-1357-41fa-91ae-b62aca1a9814 (高性能)
电源方案 GUID: 381b4222-f694-41f0-9685-ff5bb260df2e (平衡)
电源方案 GUID: 465ca7cc-504c-4c42-a5b1-6c22b59721e4 (卓越性能) *
电源方案 GUID: 9ab779c6-c83f-4e85-9bbe-fa599581a553 (节能方案)
电源方案 GUID: dd873e7a-fc4d-4c0c-9273-239cc4292931 (鲁大师节能省电方案)