Beispiel #1
0
        private IEnumerable <PowerConfigPair> PickUpGuid()
        {
            // 一覧表示
            startInfo.Arguments = "/l";

            var process = Process.Start(startInfo);

            if (process == null)
            {
                throw new InvalidOperationException();
            }

            using (var output = process.StandardOutput)
            {
                while (!output.EndOfStream)
                {
                    var line = output.ReadLine();

                    if (line == null)
                    {
                        break;
                    }

                    // GUIDが含まれる行か判定
                    if (!guidLineRegex.IsMatch(line))
                    {
                        continue;
                    }

                    var firstBracket = line.IndexOf('(');
                    var lastBracket  = line.LastIndexOf(')');

                    // 先頭と末尾の括弧の位置から名前を抜き出す
                    var name = line.Substring(firstBracket + 1, lastBracket - firstBracket - 1);
                    // 正規表現でGUIDを抜き出す
                    var guid = guidRegex.Match(line).Value;

                    var pair = new PowerConfigPair(name, guid);

                    // 現在の電源設定である時は保持
                    if (currentRegex.IsMatch(line))
                    {
                        currentConfig = pair;
                    }

                    yield return(pair);
                }
            }

            process.WaitForExit();
        }
Beispiel #2
0
        private string ApplyConfig(PowerConfigPair config)
        {
            // 引数を設定コマンドへ変更
            startInfo.Arguments = $"/s {config.Guid}";

            // コマンド実行
            var process = Process.Start(startInfo);

            if (process == null)
            {
                throw new InvalidOperationException();
            }

            process.WaitForExit();

            return(config.Name);
        }