イヤホンと一緒に歩んでいく

某家電量販店のオーディオコーナーで働いていました。みごとに沼にはまりました。はい。

【C#】実行ファイルのショートカットからコマンドライン引数を指定して実行する

こんばんは、mugihalです。

業務中にC#で設計していて感心したことがあったので覚え書きです。
常識かもしれない。


実行ファイルのショートカットからコマンドライン引数を指定して実行する方法

環境:Windows10 Home
開発環境:Visual Studio 2019
言語:C#


通常、コマンドライン引数を指定して実行する場合、以下の2択が代表的だと思います。

  1. コマンドプロンプトで「実行ファイル名 引数1 引数2 ...」と実行するか
  2. VisualStudioのプロジェクト→プロパティ→デバッグの「コマンドライン引数」を指定して開始


そのほかに、ショートカットから指定する方法があるらしい。
手順は以下の通り。

  1. ビルドして実行ファイル(.exe)を作成する。
  2. 実行ファイルのショートカットを作成する。
  3. ショートカットのプロパティ→リンク先の後ろに続けて引数を記述。
  4. ショートカットを実行。


f:id:zk_39:20190904185708j:plain
ショートカットを作成


f:id:zk_39:20190904185711j:plain
プロパティのリンク先に引数を追加


f:id:zk_39:20190904185716j:plain
実行結果


ソースコード:Program.cs

static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }


ソースコード:Form1.cs

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            SetLabel();

            // コマンドライン引数取得
            string[] args = System.Environment.GetCommandLineArgs();

            if (args.Length == 4)
            {
                // コントロールにセット
                SetText(args);
            }
        }

        public void SetLabel()
        {
            label1.Text = "引数1";
            label2.Text = "引数2";
            label3.Text = "引数3";
        }

        public void SetText(string[] args)
        {
            textBox1.Text = args[1];
            textBox2.Text = args[2];
            textBox3.Text = args[3];
        }
    }


結局、ほかの手法の方が楽じゃね?ってなりますがテストケースの一つとしてアリだと思いました。
C、C++でも同様に出来ると思います。


それでは。