private void InteractiveMode() { PowerPlan[] availablePlans = PowerPlanManager.GetPowerPlans(); PowerPlan currentPlan = PowerPlanManager.GetCurrentPowerPlan(); Console.WriteLine($"現在の電源プラン: {currentPlan.Name} ({currentPlan.Guid})\n"); availablePlans .Select((p, i) => $"{i + 1}: {availablePlans[i].Name} ({availablePlans[i].Guid})") .ToList() .ForEach(Console.WriteLine); Console.Write("\n変更したいプランの番号: "); if (!int.TryParse(Console.ReadLine(), out int result)) { return; } if (result <= 0 && availablePlans.Length < result) { return; } PowerPlan selectedPlan = availablePlans[result - 1]; PowerPlanManager.PowerSetActiveScheme(selectedPlan.Guid); Console.WriteLine($"\n{selectedPlan.Name}へ変更しました。"); }
private void ImmediateMode() { PowerPlan[] availablePlans = PowerPlanManager.GetPowerPlans(); CommandLine.Parser.Default.ParseArguments <Parser.Options>(args) .WithParsed(o => { if (o.Guid != null && o.Plan != null) { return; } if (o.Guid != null) { bool isValidGuid = Guid.TryParse(o.Guid, out Guid guid); if (!isValidGuid) { return; } PowerPlan[] searchResult = availablePlans.Where(p => p.Guid == guid).ToArray(); bool planExists = 0 < searchResult.Length; if (!planExists) { return; } PowerPlanManager.PowerSetActiveScheme(guid); return; } if (o.Plan != null) { PowerPlan plan; switch (o.Plan) { case "powersave": plan = PowerPlan.POWERSAVE; break; case "balanced": plan = PowerPlan.BALANCED; break; case "performance": plan = PowerPlan.PERFORMANCE; break; default: return; } PowerPlanManager.PowerSetActiveScheme(plan.Guid); return; } }); }
public static void UpdateMenu(ContextMenuStrip menu) { menu.Items.Clear(); foreach (var plan in PowerPlanManager.FindAll()) { var item = new ToolStripMenuItem { Text = plan.Name, Tag = plan.Guid, Checked = (plan.Guid == PowerPlanManager.Active.Guid) }; item.Click += delegate(object sender, EventArgs e) { PowerPlanManager.Active = new PowerPlan { Name = null, Guid = (Guid)((ToolStripMenuItem)sender).Tag }; }; menu.Items.Add(item); } menu.Items.Add(new ToolStripSeparator()); // Charge indicator var charge = new ToolStripMenuItem { Text = ChargeString(), Enabled = false }; menu.Items.Add(charge); // Version info var version = new ToolStripMenuItem { Text = String.Format(Strings.VersionString, Version), Enabled = false }; menu.Items.Add(version); menu.Items.Add(new ToolStripSeparator()); // Control panel shortcut var cpanel = new ToolStripMenuItem { Text = Strings.MoreSettings }; cpanel.Click += (sender, e) => Process.Start(ControlExe, "/name Microsoft.PowerOptions"); menu.Items.Add(cpanel); // Autostart var shortcutPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Startup), "PowerPlanSwitcher.lnk"); var autostart = new ToolStripMenuItem { Text = Strings.Autostart, Checked = File.Exists(shortcutPath), CheckOnClick = true }; autostart.Click += (sender, args) => { if (((ToolStripMenuItem)sender).Checked) { File.Delete(shortcutPath); var shortcut = new ShellLink { Target = Application.ExecutablePath, WorkingDirectory = Path.GetDirectoryName(Application.ExecutablePath), Description = "Power Plan Switcher", DisplayMode = ShellLink.LinkDisplayMode.edmNormal }; shortcut.Save(shortcutPath); } else { File.Delete(shortcutPath); } }; menu.Items.Add(autostart); // Exit var exit = new ToolStripMenuItem { Text = Strings.Exit }; exit.Click += delegate { _trayIcon.Visible = false; Application.Exit(); }; menu.Items.Add(exit); }