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(); }
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); }