Răsfoiți Sursa

Add option to run on system startup

Daniel Chalmers 3 ani în urmă
părinte
comite
b4dba45e3b

+ 2 - 0
DesktopClock/App.xaml.cs

@@ -27,5 +27,7 @@ public partial class App : Application
     private void Application_Exit(object sender, ExitEventArgs e)
     {
         Settings.Default.SaveIfNotModifiedExternally();
+
+        SettingsHelper.SetRunOnStartup(Settings.Default.RunOnStartup);
     }
 }

+ 4 - 0
DesktopClock/MainWindow.xaml

@@ -92,6 +92,10 @@
 				</MenuItem.Resources>
 			</MenuItem>
 
+			<MenuItem Header="_Run on startup"
+			          IsCheckable="True"
+			          IsChecked="{Binding RunOnStartup, Source={x:Static p:Settings.Default}, Mode=TwoWay}" />
+
 			<MenuItem Click="MenuItemCountdown_OnClick" Header="_Countdown to..." />
 
 			<Separator />

+ 1 - 0
DesktopClock/Properties/Settings.cs

@@ -46,6 +46,7 @@ public sealed class Settings : INotifyPropertyChanged
     public bool Topmost { get; set; } = true;
     public bool ShowInTaskbar { get; set; } = true;
     public int Height { get; set; } = 48;
+    public bool RunOnStartup { get; set; } = false;
     public WindowPlacement Placement { get; set; }
 
     [JsonIgnore]

+ 11 - 0
DesktopClock/SettingsHelper.cs

@@ -1,5 +1,6 @@
 using System;
 using DesktopClock.Properties;
+using Microsoft.Win32;
 
 namespace DesktopClock;
 
@@ -16,4 +17,14 @@ public static class SettingsHelper
     /// </summary>
     public static void SetTimeZone(TimeZoneInfo timeZone) =>
         Settings.Default.TimeZone = timeZone.Id;
+
+    public static void SetRunOnStartup(bool runOnStartup)
+    {
+        using var key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
+
+        if (runOnStartup)
+            key?.SetValue("DesktopClock", App.ResourceAssembly.Location);
+        else
+            key?.DeleteValue("DesktopClock", false);
+    }
 }