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}へ変更しました。"); }
/// <summary> /// 現在の電源プランを返します。 /// </summary> public static PowerPlan GetCurrentPowerPlan() { string output = GetRedirect(@"C:\\Windows\\system32\\powercfg.exe", "/GETACTIVESCHEME"); Match m = new Regex(PATTERN).Match(output); string guid = m.Groups["Guid"].Value; string name = m.Groups["Name"].Value; PowerPlan plan = new PowerPlan(new Guid(guid), name); return(plan); }