using Microsoft.Win32; using System.Threading; using System.Windows.Forms; using TurnoffMonitorOnLock.IconExtract; using TurnoffMonitorOnLock.MonitorPowerApi; namespace TurnoffMonitorOnLock { public partial class MainForm : Form { private bool _keepOff = false; public MainForm() { InitializeComponent(); var eIcon = IconExtractor.GetMainIcon(); if (null != eIcon) { Icon = eIcon; MinisizeToTray.Icon = eIcon; } 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; } }; } private void MainForm_Shown(object sender, System.EventArgs e) { if (Program.CommandLineArgs.Count != 0) WindowState = FormWindowState.Minimized; } private void MainForm_Resize(object sender, System.EventArgs e) { if (WindowState != FormWindowState.Minimized) return; Hide(); MinisizeToTray.Visible = true; MinisizeToTray.ShowBalloonTip(5000, Text, "Im here", ToolTipIcon.Info); } private void MinisizeToTray_Click(object sender, System.EventArgs e) { MinisizeToTray.Visible = false; Show(); WindowState = FormWindowState.Normal; } } }