Beispiel #1
0
        private void btnFFmpegDir_Click(object sender, EventArgs e)
        {
            //FolderBrowserDialogクラスのインスタンスを作成
            using (FolderBrowserDialog fbd = new FolderBrowserDialog())
            {
                //上部に表示する説明テキストを指定する
                fbd.Description = "ffmpegのフォルダを指定して下さい。";
                //ルートフォルダを指定する
                //デフォルトでDesktop
                fbd.RootFolder = Environment.SpecialFolder.MyComputer;
                //最初に選択するフォルダを指定する
                //RootFolder以下にあるフォルダである必要がある
                fbd.SelectedPath = txtFFmpegDir.Text;
                //ユーザーが新しいフォルダを作成できるようにする
                //デフォルトでTrue
                fbd.ShowNewFolderButton = false;

                //ダイアログを表示する
                if (fbd.ShowDialog(this) == DialogResult.OK)
                {
                    //選択されたフォルダを表示する
                    //Console.WriteLine(fbd.SelectedPath);

                    try
                    {
                        string dir = fbd.SelectedPath;

                        dir = FileTools.toFullPath(dir);

                        {
                            string sysRootDir = Environment.SystemDirectory[0] + ":\\";

                            if (StringTools.equalsIgnoreCase(dir, sysRootDir))
                            {
                                throw new FailedOperation("システムドライブのルートフォルダは指定出来ません。");
                            }
                        }

                        if (FFmpeg.isFFmpegDir(dir) == false)
                        {
                            throw new FailedOperation("ffmpeg のパスではありません。");
                        }

                        txtFFmpegDir.Text = dir;
                    }
                    catch (Exception ex)
                    {
                        FailedOperation.caught(ex);
                    }
                }
            }
        }
Beispiel #2
0
        private void perform()
        {
            if (FFmpeg.isFFmpegDir(Gnd.i.ffmpegDir) == false)
            {
                using (FFmpegDirDlg f = new FFmpegDirDlg())
                {
                    f.ShowDialog();
                }
                if (Gnd.i.ffmpegDir == "")
                {
                    throw new Cancelled("ffmpeg のパスが指定されていないため、続行出来ません。");
                }
                if (FFmpeg.isFFmpegDir(Gnd.i.ffmpegDir) == false)
                {
                    throw new Cancelled("ffmpeg のパスが見つからないため、続行出来ません。");
                }
            }

            try
            {
                BusyDlg.perform(delegate
                {
                    FFmpegBin.i = new FFmpegBin(FFmpeg.getBinDir());

                    try
                    {
                        FFmpegBinTester.doTest();
                    }
                    catch (Exception e)
                    {
                        Gnd.i.ffmpegDir = "";                         // 次回起動時に再設定出来るように..
                        throw new ExceptionCarrier(e);
                    }

                    if (Gnd.i.bootOpenFile != null)
                    {
                        Gnd.i.md = new MediaData(Gnd.i.bootOpenFile);
                    }
                });

                using (MainWin f = new MainWin())
                {
                    f.ShowDialog();
                }
            }
            finally
            {
                BusyDlg.perform(delegate
                {
                    if (Gnd.i.md != null)
                    {
                        Gnd.i.md.Dispose();
                        Gnd.i.md = null;
                    }
                    if (Gnd.i.qsd != null)
                    {
                        Gnd.i.qsd.Dispose();
                        Gnd.i.qsd = null;
                    }
                    if (FFmpegBin.i != null)
                    {
                        FFmpegBin.i.Dispose();
                        FFmpegBin.i = null;
                    }
                });
            }
        }