// Logic to cancel scheduled action public void Cancel_Actions(object sender, RoutedEventArgs e) { HibernateTokenSource.Cancel(); SleepTokenSource.Cancel(); System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; startInfo.FileName = "cmd.exe"; process.StartInfo = startInfo; startInfo.Arguments = "/C shutdown -a"; process.Start(); Log_Block.AppendText("Scheduled actions canceled." + Environment.NewLine); Log_Block.ScrollToEnd(); System.Windows.MessageBox.Show("Scheduled actions have been canceled.", "Success"); }
public MainWindow() { InitializeComponent(); timePicker.Value = DateTime.Now; Shutdown_Radio.IsChecked = true; if (HibernateEnabled() == false) { Hibernate_Radio.IsEnabled = false; Hibernate_Radio.ToolTip = "Hibernate is not supported by your computer"; Log_Block.Text += "Hibernate is not supported by your computer." + Environment.NewLine; Log_Block.ScrollToEnd(); } else { Log_Block.Text += "Hibernate is supported by your computer." + Environment.NewLine; Log_Block.ScrollToEnd(); } }
public void Shutdown_Click(object sender, RoutedEventArgs e) { CancellationTokenSource source = new CancellationTokenSource(); // Prepare default value DateTime LocalTime = DateTime.Now; TimeSpan OneHour = new TimeSpan(0, 1, 0, 0); DateTime OneHourIntoFuture = (LocalTime + OneHour); Boolean IsForceChecked = Force_Checkbox.IsChecked ?? false; DateTime UserSelectedTime = timePicker.Value ?? OneHourIntoFuture; // Check for valid scheduled time and pass arguments to Windows command if (UserSelectedTime > DateTime.Now.AddDays(23)) { Log_Block.AppendText("Selected time must be within 23 days." + Environment.NewLine); Log_Block.ScrollToEnd(); System.Windows.MessageBox.Show("Please enter a time within 23 days.", "Error"); } else if (UserSelectedTime >= DateTime.Now) { // Calculate time difference between local time and selected scheduled time TimeSpan TimeDifference = (UserSelectedTime - LocalTime); //Convert TimeDifference into seconds, rounding down int TimeDiffSeconds = (int)(Math.Floor(TimeDifference.TotalSeconds)); int TimeDiffMillis = (int)(Math.Floor(TimeDifference.TotalMilliseconds)); switch (Action_Title) { case "Hibernate": // Creates task for (forced) hibernate var HibernateTask = Task.Run(async delegate { await Task.Delay(TimeDiffMillis, HibernateTokenSource.Token); SetSuspendState(b1, b2, b3); }); Log_Block.AppendText(Action_Title + " (forced)" + " scheduled for " + UserSelectedTime + Environment.NewLine); Log_Block.ScrollToEnd(); System.Windows.MessageBox.Show(Action_Title + " (forced)" + " scheduled for " + UserSelectedTime, "Success"); break; case "Sleep": if (IsForceChecked) { b2 = true; // Creates task for (forced) sleep var ForcedSleepTask = new Task(async delegate { await Task.Delay(TimeDiffMillis, ForcedSleepTokenSource.Token); SetSuspendState(b1, b2, b3); }); Log_Block.AppendText(Action_Title + " (forced)" + " scheduled for " + UserSelectedTime + Environment.NewLine); Log_Block.ScrollToEnd(); System.Windows.MessageBox.Show(Action_Title + " (forced)" + " scheduled for " + UserSelectedTime, "Success"); } else { b2 = false; // Creates task for sleep var SleepTask = new Task(async delegate { await Task.Delay(TimeDiffMillis, SleepTokenSource.Token); SetSuspendState(b1, b2, b3); }); Log_Block.AppendText(Action_Title + " scheduled for " + UserSelectedTime + Environment.NewLine); Log_Block.ScrollToEnd(); System.Windows.MessageBox.Show(Action_Title + " scheduled for " + UserSelectedTime, "Success"); } break; case "Shutdown": case "Restart": // Connect to command prompt System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; startInfo.FileName = "cmd.exe"; process.StartInfo = startInfo; if (IsForceChecked) { startInfo.Arguments = "/C shutdown -f " + Action_Argument + " -t " + TimeDiffSeconds; process.Start(); Log_Block.AppendText(Action_Title + " (forced)" + " scheduled for " + UserSelectedTime + Environment.NewLine); Log_Block.ScrollToEnd(); System.Windows.MessageBox.Show(Action_Title + " (forced)" + " scheduled for " + UserSelectedTime, "Success"); } else { startInfo.Arguments = "/C shutdown " + Action_Argument + " -t " + TimeDiffSeconds; process.Start(); Log_Block.AppendText(Action_Title + " scheduled for " + UserSelectedTime + Environment.NewLine); Log_Block.ScrollToEnd(); System.Windows.MessageBox.Show(Action_Title + " scheduled for " + UserSelectedTime, "Success"); } break; } } else { Log_Block.AppendText("Invalid time entered." + Environment.NewLine); Log_Block.ScrollToEnd(); System.Windows.MessageBox.Show("Please enter a valid time.", "Error"); } }