見出し画像

CubePDFのソースコード探訪 プログラムを修正せずにダイアログ非表示で起動できるか確認

先の記事で、CubePDFには標準で"SkipUI"引数を渡すことでダイアログを表示せずに起動するオプションが有りそうと書いた。

それが正しいか検証。

まず、以前のソースコードの内容について、私の認識正しいかどうか。

       [STAThread]
       static void Main(string[] raw)
       {
           MessageBox.Show("Bootstrap");
           try
           {
               Logger.ObserveTaskException();
               Logger.Info(LogType, Assembly.GetExecutingAssembly());
               Logger.Info(LogType, $"Ghostscript {GetGsVersion()}");
               Logger.Info(LogType, $"[ {string.Join(" ", raw)} ]");
               ApplicationSetting.Configure();
               Application.EnableVisualStyles();
               Application.SetCompatibleTextRenderingDefault(false);
               var args = new ArgumentCollection(raw, Argument.Windows, true);
               var setting = CreateSetting(args, Assembly.GetExecutingAssembly());
               setting.Load();
               setting.Normalize();
               setting.Set(args);
               if (args.Options.ContainsKey("SkipUI")) Execute(setting);
               else Show(setting);
           }
           catch (Exception err) { Logger.Error(LogType, err); }
       }

argsはLinuxでは慣例的に使われているコマンド引数の名前であることは書いたが、それはWindowsにも適応されるのか不明であるので、argsに代入されているArgumentCollection()を調べてみても情報が見つからなかった。

そこで、ArgumentCollection()は標準関数と勝手に考えていたが、前回発見したVisualStudioの超絶便利機能である関数名を右クリックして「定義へ移動(F12)」を選択。

そうすると、なぜかファイルではなく「メタデータから」というタブが表示され、ArgumentCollectionの定義が表示される。よくわからない。タブを右クリックして「完全パスのコピー」からファイルを探そうとしたが、それは「AppData\Local\Temp」となぜかキャッシュを表示している。

標準機能なのか、CubePDF内で定義しているのかすら理解できなかった。

だが、先に表示された定義内に以下の表示が見つかった。

   // 概要:
   //     Provides functionality to parse arguments.

概要から、おそらくはプログラムの引数を解析するのであっているだろう。

ということで、CubePDFのショートカットを作成し、その呼出引数として「/SkipUI」を与えてみるとどうなるか確認。

画像1

ダイアログをスキップする機能のため画面は無いが、無事ダイアログがスキップされた。

これで、CubePDFには標準でダイアログをスキップする機能があることが検証できた。

この記事が気に入ったらサポートをしてみませんか?