DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

DOBON.NET

実行ファイルにドロップされたファイルのパスを取得する

実行ファイル(EXEファイル)や実行ファイルへのショートカットにファイルをドラッグ&ドロップすることにより、そのファイルを開いて起動するアプリケーションがよくあります。このようなアプリケーションを作るには、アプリケーションでドロップされたファイルのパスを取得して、そのファイルを開けばよいだけの事です。

それではドロップされたファイルのパスはどのように取得するかというと、起動時のコマンドライン引数として取得することができます。指定されたコマンドライン引数の取得法は、「起動時のコマンドライン引数を取得する」で説明していますので、そちらをご覧ください。なお複数のファイルがドロップされた場合でも、コマンドライン引数によりすべてのファイルのパスを取得できます。

さらに、関連付けによりアプリケーションが開始された場合も同様に、コマンドライン引数で開いたファイルのパスを取得できます。関連付けの方法については、「プログラムをファイルの拡張子に関連付ける」をご覧ください。

次の例では、Environment.GetCommandLineArgsメソッドを使うことにより、ドロップされたファイルを取得しています。

[VB.NET]
'コマンドラインを配列で取得する
Dim cmds As String() = System.Environment.GetCommandLineArgs()

If cmds.Length > 1 Then
    'ドロップされたファイルのパスをすべて表示
    Console.WriteLine("次のファイルがドロップされたました")
    Dim i As Integer
    For i = 1 To cmds.Length - 1
        Console.WriteLine(cmds(i))
    Next i
Else
    Console.WriteLine("ドロップされたファイルはありませんでした")
End If
[C#]
//コマンドラインを配列で取得する
string[] cmds = System.Environment.GetCommandLineArgs();

if (cmds.Length > 1)
{
    //ドロップされたファイルのパスをすべて表示
    Console.WriteLine("次のファイルがドロップされたました");
    for (int i = 1; i < cmds.Length; i++)
    {
        Console.WriteLine(cmds[i]);
    }
}
else
{
    Console.WriteLine("ドロップされたファイルはありませんでした");
}