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

Setting windows to energy save mode using Node.js

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

可以调用WinAPI函数SetSuspendState using the node-ffi库。

首先,安装库:

npm install ffi --save

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

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

function invokeStandby() {
    powrprof.SetSuspendState(0, 0, 0);
}

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


UPDATE:请注意,如果您认为使用 rundll32 是一个不错的快捷方式,那么根据计算机设置以及可能的天气和星期几(如 - 未定义的行为),因为 rundll32 不只是 运行 任意 DLL 以您认为的方式运行。参见 this article and the rundll32 docs。调用 rundll32 powrprof.dll,SetSuspendState 0,0,0 可能会使您的计算机进入睡眠状态,但它可能会在另一台计算机上执行其他操作,例如休眠而不是调用待机模式(或者理论上什至会崩溃)。所以,不要这样做!

我想到了一个不需要额外库的想法。

var exec = require('child_process').exec;
exec('rundll32.exe powrprof.dll,SetSuspendState 0,0,0');

这个函数只是生成了一个 shell 调用 rundll32.exe,因此我们可以直接使用所需的参数执行函数 SetSuspendState

希望对您有所帮助