地上の洞窟

どこにも行かず、液晶と「にらめっこ」し続ける人の物語。

【C#】エクスプローラーでファイルを開く際、アプリ側でのファイルパスの取得

エクスプローラー上で

  • アプリケーションに対してファイルをドラッグドロップ
  • ファイルを右クリック→[プログラムから開く]→アプリケーションを選択

などとして、アプリケーションを起動した際。
この時、渡されたファイルはどうやって取得するのか?

実践

渡されたファイルはアプリケーション起動時の引数になっている。
この引数から、渡されたファイルのパスを取り出すことが出来る。
起動時の引数の取得方法は、主に以下の二つ。

Mainに引数を付けて受け取る
// Mainで引数を受け取る方法
static void Main(string[] args)
{
    if (args.Length > 0)
    {
        var path = args[0];
    }
}
System.Environment.GetCommandLineArgsで取得
// 関数で起動時の引数を取得する方法
public string GetStartupFilePath()
{
    // アプリケーション起動時の引数を取得
    var args = System.Environment.GetCommandLineArgs();

    // 引数が2個以上あるなら、ファイルが渡されている
    if (args.Length > 1)
    {
        // 渡されたファイルパスを取得
        // Environment.GetCommandLineArgs[0] は実行ファイルのパスが入っている
        // 1番目以降が実際に渡されたパスになる
        var path = args[1];
        return path;
    }
    else
    {
        return null;
    }
}

今度、多重起動時に、既に起動しているプロセスにファイルパスを渡す方法を書こうと思います、たぶん。

書きました(`・ω・´)↓
under-overworld.hatenablog.jp