private async void DVPL_Create_Dir_B_Click(object sender, RoutedEventArgs e)
        {
            if (IsBusy || IsOpenDialog)
            {
                return;
            }
            IsOpenDialog = true;
            BetterFolderBrowser bfb = new BetterFolderBrowser()
            {
                Title       = ".dvplファイルが存在するフォルダを選択してください。",
                RootFolder  = Sub_Code.Get_OpenDirectory_Path(),
                Multiselect = false,
            };

            if (bfb.ShowDialog() == DialogResult.OK)
            {
                IsBusy = true;
                Sub_Code.Set_Directory_Path(bfb.SelectedFolder);
                uint          Dir_Files = 0;
                List <string> Add_Files = new List <string>();
                foreach (string file in Directory.EnumerateFiles(bfb.SelectedFolder, "*", SearchOption.AllDirectories))
                {
                    if (Dir_Files >= 100000)
                    {
                        Message_Feed_Out("フォルダ内のファイル数が多すぎます。");
                        Add_Files.Clear();
                        IsBusy       = false;
                        IsOpenDialog = false;
                        return;
                    }
                    if (Path.GetExtension(file) != ".dvpl")
                    {
                        Add_Files.Add(file);
                    }
                    Dir_Files++;
                }
                if (Add_Files.Count == 0)
                {
                    Message_Feed_Out("ファイルが見つかりませんでした。");
                    IsBusy       = false;
                    IsOpenDialog = false;
                    return;
                }
                IsMessageShowing = false;
                Message_T.Text   = "ファイルを変換しています...";
                await Task.Delay(50);

                await Multithread.DVPL_Pack(Add_Files, DVPL_Delete_C.IsChecked.Value);

                Message_Feed_Out(Add_Files.Count + "個のファイルを変換しました。");
            }
            bfb.Dispose();
            IsBusy       = false;
            IsOpenDialog = false;
        }
        private async void Save_File_Create_B_Click(object sender, RoutedEventArgs e)
        {
            if (Selected_File == "" || BNK_FSB_Voices.Count == 0)
            {
                Message_Feed_Out("音声ファイルが選択されていません。");
                return;
            }
            if (Project_Name_T.Text == "")
            {
                Message_Feed_Out("プロジェクト名が設定されていません。");
                return;
            }
            if (Project_Name_T.Text.Contains("  "))
            {
                Message_Feed_Out("プロジェクト名に空白を連続で使用することはできません。");
                return;
            }
            try
            {
                Directory.CreateDirectory(Voice_Set.Special_Path + "/Temp/" + Project_Name_T.Text);
                Directory.Delete(Voice_Set.Special_Path + "/Temp", true);
                if (Project_Name_T.Text.Contains("/") || Project_Name_T.Text.Contains("\\"))
                {
                    throw new Exception("プロジェクト名に'/'を付けることはできません。");
                }
            }
            catch (Exception e1)
            {
                Message_Feed_Out("プロジェクト名に不適切な文字が含まれています。");
                Sub_Code.Error_Log_Write(e1.Message);
                return;
            }
            System.Windows.Forms.SaveFileDialog sfd = new System.Windows.Forms.SaveFileDialog()
            {
                Title            = "セーブファイルの保存先を指定してください。",
                Filter           = "セーブファイル(*.wvs)|*.wvs",
                InitialDirectory = Directory.GetCurrentDirectory()
            };
            if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                IsBusy = true;
                try
                {
                    string Ex = Path.GetExtension(Selected_File);
                    if (Ex == ".fsb")
                    {
                        Message_T.Text = "音声ファイルを抽出しています...";
                        await Task.Delay(50);

                        Fmod_File_Extract_V2.FSB_Extract_To_Directory(Selected_File, Voice_Set.Local_Path + "/Projects/" + Project_Name_T.Text + "/All_Voices_Temp");
                        Message_T.Text = ".wavファイルをエンコードしています...";
                        await Task.Delay(50);

                        await Multithread.Convert_To_Wav(Voice_Set.Local_Path + "/Projects/" + Project_Name_T.Text + "/All_Voices_Temp", Voice_Set.Local_Path + "/Projects/" + Project_Name_T.Text + "/All_Voices", true, true, false, false);

                        Directory.Delete(Voice_Set.Local_Path + "/Projects/" + Project_Name_T.Text + "/All_Voices_Temp", true);
                    }
                    else if (Ex == ".bnk")
                    {
                        Message_T.Text = ".wavまたは.oggに変換しています...";
                        await Task.Delay(50);

                        if (IsPCKMode)
                        {
                            Wwise_File_Extract_V1 Wwise_PCK = new Wwise_File_Extract_V1(Selected_File);
                            await Wwise_PCK.Async_Wwise_Extract_To_WEM_Directory(Voice_Set.Local_Path + "/Projects/" + Project_Name_T.Text + "/All_Voices");

                            await Wwise_PCK.Async_Wwise_Extract_To_OGG_Directory(Voice_Set.Local_Path + "/Projects/" + Project_Name_T.Text + "/All_Voices");

                            Wwise_PCK.Pck_Clear();
                        }
                        else
                        {
                            Wwise_File_Extract_V2 Wwise_BNK = new Wwise_File_Extract_V2(Selected_File);
                            Wwise_BNK.Wwise_Extract_To_WEM_Directory_V2(Voice_Set.Local_Path + "/Projects/" + Project_Name_T.Text + "/All_Voices");
                            Wwise_BNK.Bank_Clear();
                        }
                        Message_T.Text = "不要な音声ファイルを削除しています...";
                        await Task.Delay(50);

                        string[] All_Files = Directory.GetFiles(Voice_Set.Local_Path + "/Projects/" + Project_Name_T.Text + "/All_Voices", "*", SearchOption.TopDirectoryOnly);
                        foreach (string File_Now in All_Files)
                        {
                            if (!Need_Files.Contains(Path.GetFileNameWithoutExtension(File_Now)))
                            {
                                Sub_Code.File_Delete_V2(File_Now);
                            }
                        }
                        string[] Files = Directory.GetFiles(Voice_Set.Local_Path + "/Projects/" + Project_Name_T.Text + "/All_Voices", "*.wem", SearchOption.TopDirectoryOnly);
                        foreach (string File_Now in Files)
                        {
                            Sub_Code.File_Delete_V2(File_Now);
                        }
                    }
                    StreamWriter stw = File.CreateText(sfd.FileName + ".tmp");
                    stw.WriteLine(Project_Name_T.Text + "|IsNotChangeProjectNameMode=true");
                    for (int Number = 0; Number < BNK_FSB_Voices.Count; Number++)
                    {
                        foreach (string Name in BNK_FSB_Voices[Number])
                        {
                            stw.WriteLine(Number + "|" + Sub_Code.File_Get_FileName_No_Extension(Voice_Set.Local_Path + "\\Projects\\" + Project_Name_T.Text + "\\All_Voices\\" + Name));
                        }
                    }
                    stw.Close();
                    Sub_Code.File_Encrypt(sfd.FileName + ".tmp", sfd.FileName, "SRTTbacon_Create_Voice_Save", true);
                    Message_Feed_Out("保存しました。\nProjectsフォルダに該当する音声が入っています。");
                    Flash.Flash_Start();
                }
                catch (Exception e1)
                {
                    Sub_Code.Error_Log_Write(e1.Message);
                    Message_Feed_Out("エラーが発生しました。");
                }
                IsBusy = false;
            }
            sfd.Dispose();
        }