예제 #1
0
        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);
        }