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

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

例えばデスクトップに「メモ帳」(notepad.exe)のショートカットを作っておくと、そのショートカットにテキストファイルをドラッグ&ドロップすればメモ帳で開くことができるようになります。このようにアプリケーションの実行ファイル(EXEファイル)や実行ファイルへのショートカットにファイルをドラッグ&ドロップした時、そのファイルを開くには、どのファイルがドロップされたのかを知る必要があります。ここでは、その方法について説明します。

実行ファイルやシュートカットにドロップされたファイルのパスは、アプリケーション起動時のコマンドライン引数として取得することができます。コマンドライン引数を取得する方法は「起動時のコマンドライン引数を取得する」で説明していますが、例えばEnvironment.GetCommandLineArgsメソッドを使用すると簡単です。

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

VB.NET
コードを隠すコードを選択
'コマンドライン引数を配列で取得する
Dim files As String() = System.Environment.GetCommandLineArgs()

If files.Length > 1 Then
    '配列の要素数が2以上の時、コマンドライン引数が存在する
    Console.WriteLine("次のファイルがドロップされました")

    '配列の先頭には実行ファイルのパスが入っているので、
    '2番目以降がドロップされたファイルのパスになる
    Dim i As Integer
    For i = 1 To files.Length - 1
        Console.WriteLine(files(i))
    Next
Else
    '配列の要素数が1の時、コマンドライン引数は存在しない
    Console.WriteLine("ドロップされたファイルはありませんでした")
End If
C#
コードを隠すコードを選択
//コマンドライン引数を配列で取得する
string[] files = System.Environment.GetCommandLineArgs();

if (files.Length > 1)
{
    //配列の要素数が2以上の時、コマンドライン引数が存在する
    Console.WriteLine("次のファイルがドロップされました");

    //配列の先頭には実行ファイルのパスが入っているので、
    //2番目以降がドロップされたファイルのパスになる
    for (int i = 1; i < files.Length; i++)
    {
        Console.WriteLine(files[i]);
    }
}
else
{
    //配列の要素数が1の時、コマンドライン引数は存在しない
    Console.WriteLine("ドロップされたファイルはありませんでした");
}
  • 履歴:
  • 2014/8/19 説明を書き換えた。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。