创建了一个脚本来切换盖子关闭操作(睡眠/什么都不做)我可以看到它生效,但它不起作用



我制作了一个vbs脚本,基本上可以在Sleep和nothing之间切换合上盖子的动作。

这个想法是有一个图标在我的桌面上保存去ControlPanel>PowerOptions>ChangeWhatClosingTheLidDoes每次。我用的是Windows 7 x64。

当我运行它时,在控制面板中我可以看到盖子关闭动作发生了变化,但是当我实际关闭盖子时,行为没有变化。

有什么建议可以阻止系统服从它的指示??

很奇怪,我可以看到ControlPanel>PowerOptions的变化,但它不工作…

视频演示在这里,不知道如何嵌入…https://www.youtube.com/watch?v=N1yjiTMgnzk&特性= youtu.be

vbs脚本基本上检查。bat文件中的值,反转它们并运行它。很简单的;

ToggleLidAction.vbs
Const ForAppending = 8
Const ForReading = 1
Dim outPutFile
Dim objFSO, objFile, objOutFile, strLine
dim sleepLine1, sleepLine2, doNothingLine1, doNothingLine2
sleepLine1 = "powercfg -SETACVALUEINDEX 381b4222-f694-41f0-9685-ff5bb260df2e 4f971e89-eebd-4455-a8de-9e59040e7347 5ca83367-6e45-459f-a27b-476b1d01c936 1"
sleepLine2 = "powercfg -SETDCVALUEINDEX 381b4222-f694-41f0-9685-ff5bb260df2e 4f971e89-eebd-4455-a8de-9e59040e7347 5ca83367-6e45-459f-a27b-476b1d01c936 1"
doNothingLine1 = "powercfg -SETACVALUEINDEX 381b4222-f694-41f0-9685-ff5bb260df2e 4f971e89-eebd-4455-a8de-9e59040e7347 5ca83367-6e45-459f-a27b-476b1d01c936 0"
doNothingLine2 = "powercfg -SETDCVALUEINDEX 381b4222-f694-41f0-9685-ff5bb260df2e 4f971e89-  eebd-4455-a8de-9e59040e7347 5ca83367-6e45-459f-a27b-476b1d01c936 0"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("ToggleLidAction.bat", ForReading)
Do Until objFile.AtEndOfStream
    strLine = objFile.ReadLine
    strDoNothing = Instr(strLine,"powercfg -SETDCVALUEINDEX 381b4222-f694-41f0-9685- ff5bb260df2e 4f971e89-eebd-4455-a8de-9e59040e7347 5ca83367-6e45-459f-a27b-476b1d01c936 0")
    strSleep = Instr(strLine,"powercfg -SETDCVALUEINDEX 381b4222-f694-41f0-9685-     ff5bb260df2e 4f971e89-eebd-4455-a8de-9e59040e7347 5ca83367-6e45-459f-a27b-476b1d01c936 1")
Loop
objFile.Close
Set obj = CreateObject("Scripting.FileSystemObject")
obj.DeleteFile("ToggleLidAction.bat")
If strDoNothing Then
outPutFile = "ToggleLidAction.bat"
    Set objOutFile = objFSO.CreateTextFile(outPutFile,ForAppending)
    objOutFile.WriteLine ""& sleepLine1 &""
    objOutFile.WriteLine ""& sleepLine2 &""
    Msgbox ("The System will now Sleep when the lid is closed.")
else if strSleep Then
    outPutFile = "ToggleLidAction.bat"
    Set objOutFile = objFSO.CreateTextFile(outPutFile,ForAppending)
    objOutFile.WriteLine ""& doNothingLine1 &""
    objOutFile.WriteLine ""& doNothingLine2 &""
    Msgbox ("The System will now continue running when the lid is closed.")
end if
end if
objOutFile.Close
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "ToggleLidAction.bat C:WINDOWSsystem32cmd.exe", 0

ToggleLidAction.bat

powercfg -SETACVALUEINDEX 381b4222-f694-41f0-9685-ff5bb260df2e 4f971e89-eebd-4455-a8de-9e59040e7347 5ca83367-6e45-459f-a27b-476b1d01c936 0
powercfg -SETDCVALUEINDEX 381b4222-f694-41f0-9685-ff5bb260df2e 4f971e89-eebd-4455-a8de-9e59040e7347 5ca83367-6e45-459f-a27b-476b1d01c936 0

powercfg -SETACVALUEINDEX 381b4222-f694-41f0-9685-ff5bb260df2e 4f971e89-eebd-4455-a8de-      9e59040e7347 5ca83367-6e45-459f-a27b-476b1d01c936 1
powercfg -SETDCVALUEINDEX 381b4222-f694-41f0-9685-ff5bb260df2e 4f971e89-eebd-4455-a8de-9e59040e7347 5ca83367-6e45-459f-a27b-476b1d01c936 1

虽然我不认为这是代码的问题,因为正如我所说的,你可以在视频中看到,我可以看到控制面板的变化。

谢谢你的阅读,

摘自已删除问题的评论:

原来缺失的是powercfg -setactive

powercfg需要其中一个来更新对当前方案的更改。因此,要通过cmd行/批处理文件更改设置,您需要运行:

powercfg -setacvalueindex Scheme_GUID Sub_GUID Setting_GUID SettingIndex

紧随其后:

powercfg -setactive Scheme_GUID

最新更新