diff --git a/ElectronNET.API/PowerMonitor.cs b/ElectronNET.API/PowerMonitor.cs
index 2b1c802..8954904 100644
--- a/ElectronNET.API/PowerMonitor.cs
+++ b/ElectronNET.API/PowerMonitor.cs
@@ -64,6 +64,156 @@ namespace ElectronNET.API
}
private event Action _unlockScreen;
+
+ ///
+ ///Emitted when the system is suspending.
+ ///
+ public event Action OnSuspend
+ {
+ add
+ {
+ if (_suspend == null)
+ {
+ BridgeConnector.Socket.On("pm-suspend", () =>
+ {
+ _suspend();
+ });
+
+ BridgeConnector.Socket.Emit("register-pm-suspend");
+ }
+ _suspend += value;
+ }
+ remove
+ {
+ _suspend -= value;
+
+ if (_suspend == null)
+ BridgeConnector.Socket.Off("pm-suspend");
+ }
+ }
+
+ private event Action _suspend;
+
+ ///
+ ///Emitted when system is resuming.
+ ///
+ public event Action OnResume
+ {
+ add
+ {
+ if (_resume == null)
+ {
+ BridgeConnector.Socket.On("pm-resume", () =>
+ {
+ _resume();
+ });
+
+ BridgeConnector.Socket.Emit("register-pm-resume");
+ }
+ _resume += value;
+ }
+ remove
+ {
+ _resume -= value;
+
+ if (_resume == null)
+ BridgeConnector.Socket.Off("pm-resume");
+ }
+ }
+
+ private event Action _resume;
+
+ ///
+ ///Emitted when the system changes to AC power.
+ ///
+ public event Action OnAC
+ {
+ add
+ {
+ if (_onAC == null)
+ {
+ BridgeConnector.Socket.On("pm-on-ac", () =>
+ {
+ _onAC();
+ });
+
+ BridgeConnector.Socket.Emit("register-pm-on-ac");
+ }
+ _onAC += value;
+ }
+ remove
+ {
+ _onAC -= value;
+
+ if (_onAC == null)
+ BridgeConnector.Socket.Off("pm-on-ac");
+ }
+ }
+
+ private event Action _onAC;
+
+ ///
+ ///Emitted when system changes to battery power.
+ ///
+ public event Action OnBattery
+ {
+ add
+ {
+ if (_onBattery == null)
+ {
+ BridgeConnector.Socket.On("pm-on-battery", () =>
+ {
+ _onBattery();
+ });
+
+ BridgeConnector.Socket.Emit("register-pm-on-battery");
+ }
+ _onBattery += value;
+ }
+ remove
+ {
+ _onBattery -= value;
+
+ if (_onBattery == null)
+ BridgeConnector.Socket.Off("pm-on-battery");
+ }
+ }
+
+ private event Action _onBattery;
+
+
+ ///
+ ///Emitted when the system is about to reboot or shut down. If the event handler
+ ///invokes `e.preventDefault()`, Electron will attempt to delay system shutdown in
+ ///order for the app to exit cleanly.If `e.preventDefault()` is called, the app
+ ///should exit as soon as possible by calling something like `app.quit()`.
+ ///
+ public event Action OnShutdown
+ {
+ add
+ {
+ if (_shutdown == null)
+ {
+ BridgeConnector.Socket.On("pm-shutdown", () =>
+ {
+ _shutdown();
+ });
+
+ BridgeConnector.Socket.Emit("register-pm-shutdown");
+ }
+ _shutdown += value;
+ }
+ remove
+ {
+ _shutdown -= value;
+
+ if (_shutdown == null)
+ BridgeConnector.Socket.Off("pm-on-shutdown");
+ }
+ }
+
+ private event Action _shutdown;
+
private static PowerMonitor _powerMonitor;
private static object _syncRoot = new object();
diff --git a/ElectronNET.Host/api/powerMonitor.js b/ElectronNET.Host/api/powerMonitor.js
index be876e4..0b4dd7a 100644
--- a/ElectronNET.Host/api/powerMonitor.js
+++ b/ElectronNET.Host/api/powerMonitor.js
@@ -13,5 +13,30 @@ module.exports = (socket) => {
electronSocket.emit('pm-unlock-screen');
});
});
+ socket.on('register-pm-suspend', () => {
+ electron_1.powerMonitor.on('suspend', () => {
+ electronSocket.emit('pm-suspend');
+ });
+ });
+ socket.on('register-pm-resume', () => {
+ electron_1.powerMonitor.on('resume', () => {
+ electronSocket.emit('pm-resume');
+ });
+ });
+ socket.on('register-pm-on-ac', () => {
+ electron_1.powerMonitor.on('on-ac', () => {
+ electronSocket.emit('pm-on-ac');
+ });
+ });
+ socket.on('register-pm-on-battery', () => {
+ electron_1.powerMonitor.on('on-battery', () => {
+ electronSocket.emit('pm-on-battery');
+ });
+ });
+ socket.on('register-pm-shutdown', () => {
+ electron_1.powerMonitor.on('shutdown', () => {
+ electronSocket.emit('pm-shutdown');
+ });
+ });
};
//# sourceMappingURL=powerMonitor.js.map
\ No newline at end of file
diff --git a/ElectronNET.Host/api/powerMonitor.js.map b/ElectronNET.Host/api/powerMonitor.js.map
index 35ffbfd..51c5763 100644
--- a/ElectronNET.Host/api/powerMonitor.js.map
+++ b/ElectronNET.Host/api/powerMonitor.js.map
@@ -1 +1 @@
-{"version":3,"file":"powerMonitor.js","sourceRoot":"","sources":["powerMonitor.ts"],"names":[],"mappings":";AAAA,uCAAwC;AACxC,IAAI,cAAc,CAAC;AAEnB,iBAAS,CAAC,MAAuB,EAAE,EAAE;IACjC,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACtC,uBAAY,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;YAChC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACxC,uBAAY,CAAC,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;YAClC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"}
\ No newline at end of file
+{"version":3,"file":"powerMonitor.js","sourceRoot":"","sources":["powerMonitor.ts"],"names":[],"mappings":";AAAA,uCAAwC;AACxC,IAAI,cAAc,CAAC;AAEnB,iBAAS,CAAC,MAAuB,EAAE,EAAE;IACjC,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACtC,uBAAY,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;YAChC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACxC,uBAAY,CAAC,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;YAClC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAClC,uBAAY,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YAC5B,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QACjC,uBAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YAC3B,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAChC,uBAAY,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC1B,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACrC,uBAAY,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;YAC/B,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACnC,uBAAY,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;YAC7B,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"}
\ No newline at end of file
diff --git a/ElectronNET.Host/api/powerMonitor.ts b/ElectronNET.Host/api/powerMonitor.ts
index f630a0a..30b42df 100644
--- a/ElectronNET.Host/api/powerMonitor.ts
+++ b/ElectronNET.Host/api/powerMonitor.ts
@@ -13,4 +13,29 @@ export = (socket: SocketIO.Socket) => {
electronSocket.emit('pm-unlock-screen');
});
});
+ socket.on('register-pm-suspend', () => {
+ powerMonitor.on('suspend', () => {
+ electronSocket.emit('pm-suspend');
+ });
+ });
+ socket.on('register-pm-resume', () => {
+ powerMonitor.on('resume', () => {
+ electronSocket.emit('pm-resume');
+ });
+ });
+ socket.on('register-pm-on-ac', () => {
+ powerMonitor.on('on-ac', () => {
+ electronSocket.emit('pm-on-ac');
+ });
+ });
+ socket.on('register-pm-on-battery', () => {
+ powerMonitor.on('on-battery', () => {
+ electronSocket.emit('pm-on-battery');
+ });
+ });
+ socket.on('register-pm-shutdown', () => {
+ powerMonitor.on('shutdown', () => {
+ electronSocket.emit('pm-shutdown');
+ });
+ });
};
diff --git a/ElectronNET.Host/package-lock.json b/ElectronNET.Host/package-lock.json
index 8fbff34..d4e4a72 100644
--- a/ElectronNET.Host/package-lock.json
+++ b/ElectronNET.Host/package-lock.json
@@ -89,9 +89,9 @@
}
},
"@electron/get": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.10.0.tgz",
- "integrity": "sha512-hlueNXU51c3CwQjBw/i5fwt+VfQgSQVUTdicpCHkhEjNZaa4CXJ5W1GaxSwtLE2dvRmAHjpIjUMHTqJ53uojfg==",
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.2.tgz",
+ "integrity": "sha512-vAuHUbfvBQpYTJ5wB7uVIDq5c/Ry0fiTBMs7lnEYAo/qXXppIVcWdfBr57u6eRnKdVso7KSiH6p/LbQAG6Izrg==",
"dev": true,
"requires": {
"debug": "^4.1.1",
@@ -440,9 +440,9 @@
"dev": true
},
"electron": {
- "version": "8.2.3",
- "resolved": "https://registry.npmjs.org/electron/-/electron-8.2.3.tgz",
- "integrity": "sha512-FJUp103c8yJBoAaj/QM/OBde57iJh95u1yGJBytMUXmLFSsx78LmNE03QN4XCODyzi76IEcasvUcK6scogRLbQ==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/electron/-/electron-8.3.0.tgz",
+ "integrity": "sha512-XRjiIJICZCgUr2vKSUI2PTkfP0gPFqCtqJUaTJSfCTuE3nTrxBKOUNeRMuCzEqspKkpFQU3SB3MdbMSHmZARlQ==",
"dev": true,
"requires": {
"@electron/get": "^1.0.1",
@@ -451,9 +451,9 @@
},
"dependencies": {
"@types/node": {
- "version": "12.12.36",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.36.tgz",
- "integrity": "sha512-hmmypvyO/uTLFYCYu6Hlb3ydeJ11vXRxg8/WJ0E3wvwmPO0y47VqnfmXFVuWlysO0Zyj+je1Y33rQeuYkZ51GQ==",
+ "version": "12.12.39",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.39.tgz",
+ "integrity": "sha512-pADGfwnDkr6zagDwEiCVE4yQrv7XDkoeVa4OfA9Ju/zRTk6YNDLGtQbkdL4/56mCQQCs4AhNrBIag6jrp7ZuOg==",
"dev": true
}
}
diff --git a/ElectronNET.Host/package.json b/ElectronNET.Host/package.json
index afb0e80..b5b2b73 100644
--- a/ElectronNET.Host/package.json
+++ b/ElectronNET.Host/package.json
@@ -21,7 +21,7 @@
"devDependencies": {
"@types/node": "^10.14.4",
"@types/socket.io": "^2.1.2",
- "electron": "^8.2.3",
+ "electron": "^8.3.0",
"tslint": "^6.1.1",
"typescript": "^3.8.3"
}
diff --git a/ElectronNET.WebApp/Controllers/HomeController.cs b/ElectronNET.WebApp/Controllers/HomeController.cs
index 92a0441..e944fcd 100644
--- a/ElectronNET.WebApp/Controllers/HomeController.cs
+++ b/ElectronNET.WebApp/Controllers/HomeController.cs
@@ -19,6 +19,27 @@ namespace ElectronNET.WebApp.Controllers
{
Console.WriteLine("Screen unlocked detected from C# ");
};
+
+ Electron.PowerMonitor.OnSuspend += () =>
+ {
+ Console.WriteLine("The system is going to sleep");
+ };
+
+ Electron.PowerMonitor.OnResume += () =>
+ {
+ Console.WriteLine("The system is resuming");
+ };
+
+ Electron.PowerMonitor.OnAC += () =>
+ {
+ Console.WriteLine("The system changes to AC power");
+ };
+
+ Electron.PowerMonitor.OnBattery += () =>
+ {
+ Console.WriteLine("The system about to reboot or shut down.");
+ };
+
}
return View();