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

时间:2016-05-04 15:21:51

标签: node.js electron

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

2 个答案:

答案 0 :(得分:5)

您可以使用SetSuspendState库调用WinAPI函数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

更新:请注意,如果您认为一个好的快捷方式是使用rundll32,那么根据计算机设置以及可能的天气和星期几,您会得到奇怪的行为(因为 - 未定义的行为),因为rundll32并不像你想象的那样只运行任意DLL函数。请参阅this articlerundll32 docs。调用rundll32 powrprof.dll,SetSuspendState 0,0,0可能会使您的计算机进入休眠状态,但它可能会在另一台计算机上执行其他操作,例如休眠而不是调用待机模式(或理论上甚至崩溃)。所以,不要这样做!

答案 1 :(得分:0)

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

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

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

希望这有帮助