1
0
mirror of https://github.com/Ylianst/MeshAgent synced 2025-12-19 09:43:20 +00:00

added power-monitor.sleepDisplay() support to macOS

This commit is contained in:
Bryan Roe
2020-06-10 14:24:51 -07:00
parent 5aff4c172e
commit f9f7f28472
2 changed files with 42 additions and 27 deletions

File diff suppressed because one or more lines are too long

View File

@@ -184,34 +184,49 @@ function powerMonitor()
{ {
var promise = require('promise'); var promise = require('promise');
p = new promise(function (res, rej) { this._res = res; this._rej = rej; }); p = new promise(function (res, rej) { this._res = res; this._rej = rej; });
if (process.platform != 'win32') { p._rej('Not supported'); return (p); }
if (require('user-sessions').getProcessOwnerName(process.pid).tsid == 0) switch (process.platform)
{ {
// We are running as LocalSystem, so we have to find a user session for this to work case 'win32':
var options = { launch: { module: 'power-monitor', method: 'sleepDisplay', args: [] } }; if (require('user-sessions').getProcessOwnerName(process.pid).tsid == 0)
try {
{ // We are running as LocalSystem, so we have to find a user session for this to work
options.user = require('user-sessions').getUsername(require('user-sessions').consoleUid()); var options = { launch: { module: 'power-monitor', method: 'sleepDisplay', args: [] } };
} try
catch(ee) {
{ options.user = require('user-sessions').getUsername(require('user-sessions').consoleUid());
p._rej('No users logged in'); }
return (p); catch (ee)
} {
p.child = require('child-container').create(options); p._rej('No users logged in');
p.child.promise = p; return (p);
p.child.on('exit', function () { this.promise._res(); }); }
} p.child = require('child-container').create(options);
else p.child.promise = p;
{ p.child.on('exit', function () { this.promise._res(); });
if (require('child-container').child) { require('win-console').hide(); } }
var GM = require('_GenericMarshal'); else
var user32 = GM.CreateNativeProxy('User32.dll'); {
user32.CreateMethod('SendMessageA'); if (require('child-container').child) { require('win-console').hide(); }
user32.SendMessageA(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2); var GM = require('_GenericMarshal');
p._res(); var user32 = GM.CreateNativeProxy('User32.dll');
if (require('child-container').child) { process._exit(); } user32.CreateMethod('SendMessageA');
user32.SendMessageA(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
p._res();
if (require('child-container').child) { process._exit(); }
}
break;
case 'darwin':
p.child = require('child_process').execFile('/bin/sh', ['sh']);
p.child.promise = p;
p.child.stderr.on('data', function () { });
p.child.stdout.on('data', function () { });
p.child.on('exit', function () { this.promise._res(); });
p.child.stdin.write('pmset displaysleepnow\nexit\n');
break;
default:
p._rej('Not Supported');
break;
} }
return (p); return (p);
}; };