我正在开发一个使用电子和Node.js的应用程序,它应该在需要时将笔记本电脑(运行windows 10)设置为节能模式,这能用Node.js和电子技术来实现吗?谢谢
发布于 2016-05-04 15:32:54
您可以使用WinAPI库调用SetSuspendState函数。
首先,安装库:
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)。有关细节,请参阅文档。
UPDATE:注意,如果您认为使用rundll32是一个很好的快捷方式,那么根据计算机设置以及可能的天气和一周的时间(如未定义的行为),您将得到奇怪的行为,因为rundll32并不只是以您认为的方式运行任意的DLL函数。参见这篇文章和文档。调用rundll32 powrprof.dll,SetSuspendState 0,0,0可能会使您的计算机进入睡眠状态,但它可能会在另一台计算机上执行其他操作,例如休眠,而不是调用备用模式(理论上甚至会崩溃)。所以,不要这么做!
发布于 2016-05-04 16:00:32
我想出了一个不需要额外库的想法。
var exec = require('child_process').exec;
exec('rundll32.exe powrprof.dll,SetSuspendState 0,0,0');这个函数只是生成一个名为rundll32.exe的shell,这样我们就可以直接使用所需的参数执行函数SetSuspendState。
希望这能有所帮助
https://stackoverflow.com/questions/37031935
复制相似问题