我正在使用Electron和Node.js开发应用程序,并且应该在需要时将笔记本电脑(运行Windows 10)设置为节能模式,这是否可以使用Node.js和电子技术来实现这一点?感谢
答案 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 article和rundll32
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
。
希望这有帮助