// 音声を保存する際に、別スレッドで保存ダイアログを処理するため private void SaveVoice_Dialog() { while (true) { Thread.Sleep(10); var wcm = new WindowControllerManager("音声ファイルの保存"); var dlg = wcm.GetTop(); if (dlg == null) { continue; } if (wcm.GetChiledByClassName("Edit") == null) { continue; } if (wcm.GetChiledByText("保存(&S)") == null) { continue; } var dir = save_dir_path; var name_head = output_name + "_"; var file_type = "wav"; var text_box = wcm.GetChiledByClassName("Edit"); var file_path = CreateNextPathByVoiceRoid(dir, name_head, file_type); text_box.SendText(file_path); // 入力が正常にされてるかチェック // 正常に動作していない場合は、時間をおいて再入力 var text = text_box.GetText(); var i = 0; var re_set_marign = 10; while (text != file_path) { Console.WriteLine("NG"); WaitSleep.Do(10); if (i % re_set_marign == 0) { text_box.SendText(file_path); } i++; } WaitSleep.Do(10); var ok_button = wcm.GetChiledByText("保存(&S)"); ok_button.ClickL(); WaitSleep.Do(10); break; } }
// 下記のコードが散らばるのを避けるのと、処理の重複を気にして関数にまとめている // var wcm = new WindowControllerManager(app_title); // is_update_force : true にすると強制的に、新しいWindowControllerManagerを用意する private WindowControllerManager GetWCM(bool is_update_force = false) { if (window_controller_manager == null) { window_controller_manager = new WindowControllerManager(app_title); } else if (window_controller_manager.GetTop() == null) { window_controller_manager = new WindowControllerManager(app_title); } else if (is_update_force) { window_controller_manager = new WindowControllerManager(app_title); } return(window_controller_manager); }