MainForm.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using Microsoft.Win32;
  2. using System.Threading;
  3. using System.Windows.Forms;
  4. using TurnoffMonitorOnLock.IconExtract;
  5. using TurnoffMonitorOnLock.MonitorPowerApi;
  6. namespace TurnoffMonitorOnLock
  7. {
  8. public partial class MainForm : Form
  9. {
  10. private bool _keepOff = false;
  11. public MainForm()
  12. {
  13. InitializeComponent();
  14. var eIcon = IconExtractor.GetMainIcon();
  15. if (null != eIcon)
  16. {
  17. Icon = eIcon;
  18. MinisizeToTray.Icon = eIcon;
  19. }
  20. SystemEvents.SessionSwitch += delegate (object o, SessionSwitchEventArgs args)
  21. {
  22. if (args.Reason == SessionSwitchReason.SessionLock)
  23. {
  24. Thread.Sleep(1500);
  25. MonitorPower.SetMonitorInState(MonitorState.MonitorStateOff);
  26. _keepOff = true;
  27. new Thread(() =>
  28. {
  29. while (_keepOff)
  30. {
  31. Thread.Sleep(1000 * 10);
  32. if (!_keepOff) break;
  33. MonitorPower.SetMonitorInState(MonitorState.MonitorStateOff);
  34. }
  35. }).Start();
  36. }
  37. else
  38. {
  39. _keepOff = false;
  40. }
  41. };
  42. }
  43. private void MainForm_Shown(object sender, System.EventArgs e)
  44. {
  45. if (Program.CommandLineArgs.Count != 0) WindowState = FormWindowState.Minimized;
  46. }
  47. private void MainForm_Resize(object sender, System.EventArgs e)
  48. {
  49. if (WindowState != FormWindowState.Minimized) return;
  50. Hide();
  51. MinisizeToTray.Visible = true;
  52. MinisizeToTray.ShowBalloonTip(5000, Text, "Im here", ToolTipIcon.Info);
  53. }
  54. private void MinisizeToTray_Click(object sender, System.EventArgs e)
  55. {
  56. MinisizeToTray.Visible = false;
  57. Show();
  58. WindowState = FormWindowState.Normal;
  59. }
  60. }
  61. }