|
@@ -1,5 +1,6 @@
|
|
|
-using System.Windows.Forms;
|
|
|
-using Microsoft.Win32;
|
|
|
+using Microsoft.Win32;
|
|
|
+using System.Threading;
|
|
|
+using System.Windows.Forms;
|
|
|
using TurnoffMonitorOnLock.IconExtract;
|
|
|
using TurnoffMonitorOnLock.MonitorPowerApi;
|
|
|
|
|
@@ -7,6 +8,8 @@ namespace TurnoffMonitorOnLock
|
|
|
{
|
|
|
public partial class MainForm : Form
|
|
|
{
|
|
|
+ private bool _keepOff = false;
|
|
|
+
|
|
|
public MainForm()
|
|
|
{
|
|
|
InitializeComponent();
|
|
@@ -19,7 +22,24 @@ namespace TurnoffMonitorOnLock
|
|
|
SystemEvents.SessionSwitch += delegate (object o, SessionSwitchEventArgs args)
|
|
|
{
|
|
|
if (args.Reason == SessionSwitchReason.SessionLock)
|
|
|
+ {
|
|
|
+ Thread.Sleep(1500);
|
|
|
MonitorPower.SetMonitorInState(MonitorState.MonitorStateOff);
|
|
|
+ _keepOff = true;
|
|
|
+ new Thread(() =>
|
|
|
+ {
|
|
|
+ while (_keepOff)
|
|
|
+ {
|
|
|
+ Thread.Sleep(1000 * 10);
|
|
|
+ if (!_keepOff) break;
|
|
|
+ MonitorPower.SetMonitorInState(MonitorState.MonitorStateOff);
|
|
|
+ }
|
|
|
+ }).Start();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ _keepOff = false;
|
|
|
+ }
|
|
|
};
|
|
|
}
|
|
|
|