使用Node.js将窗口设置为节能模式

ePe*_*man 0 node.js electron

我正在使用Electron和Node.js开发一个应用程序,应该在需要时将笔记本电脑(运行Windows 10)设置为节能模式,这是否有可能使用Node.js和electronic技术做到这一点?谢谢

Che*_*yDT 5

您可以SetSuspendState使用该node-ffi库调用WinAPI函数。

首先,安装库:

npm install ffi --save
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用以下代码:

var ffi = require('ffi');
var powrprof = ffi.Library('powrprof.dll', {
    SetSuspendState: ['int', ['int', 'int', 'int']]
});

function invokeStandby() {
    powrprof.SetSuspendState(0, 0, 0);
}
Run Code Online (Sandbox Code Playgroud)

请注意,这会进行正常的待机,并使唤醒事件保持打开状态。如果要禁用唤醒事件,请使用powrprof.SetSuspendState(0, 0, 1)(第三个参数1而不是0)。有关详细信息,请参阅文档


更新:请注意,如果您认为会使用一个不错的快捷方式rundll32,那么您将得到奇怪的行为,具体取决于计算机设置以及天气和星期几(如-未定义行为),因为rundll32它不仅运行任意DLL发挥您的思维方式。请参阅本文rundll32文档。调用rundll32 powrprof.dll,SetSuspendState 0,0,0可能会使您的计算机进入睡眠状态,但可能会使另一台计算机执行其他操作,例如休眠而不是调用待机模式(理论上甚至崩溃)。所以,不要这样做!