Browse Source

keep TurnoffMonitor

HOME 1 year ago
parent
commit
73f4e579ff
1 changed files with 22 additions and 2 deletions
  1. 22 2
      TurnoffMonitorOnLock/MainForm.cs

+ 22 - 2
TurnoffMonitorOnLock/MainForm.cs

@@ -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;
+                }
             };
         }