Visual Basic サンプル集 |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Visual Basic 中学校 > Visual Basic サンプル集 > Visual Basic サンプル集目次 >
起動時にドロップされたファイルを受け取る
2020/6/24
Dim path1
As String =
Environment.GetCommandLineArgs(1) Dim path2 As String = Environment.GetCommandLineArgs(2) Dim path3 As String = Environment.GetCommandLineArgs(3) '取得したパスを C:\temp\droptest.txt に書き込みます。確認用に利用してください。 IO.File.AppendAllLines("C:\temp\droptest.txt", {path1}) IO.File.AppendAllLines("C:\temp\droptest.txt", {path2}) IO.File.AppendAllLines("C:\temp\droptest.txt", {path3}) |
スペースを含むパスも受け取れます。
メモ:最初のファイルは (0) ではなく、(1) です。 (0) は実行ファイルのフルパスを表します。
同じことをループで処理する例
こちらはいくつでも処理できます。
For Each
droppedPath In
Environment.GetCommandLineArgs.Skip(1) '取得したパスを C:\temp\droptest.txt に書き込みます。確認用に利用してください。 IO.File.AppendAllLines("C:\temp\droptest.txt", {droppedPath}) Next |
メモ:ドロップされたファイルのフルパスはコマンドラインとして扱われます。コマンドラインの最大長は8191文字程度です。大量のファイルやフォルダーをドロップするとこの上限に達する場合があります。
参考:Visual Studioでデバッグ実行する方法
Visual Studioで本当にドロップしてデバッグ実行を開始することはできません。
ドロップしたことにしてデバッグ実行することはできます。
それには、プロジェクトのプロパティでデバッグページのアプリケーション引数にドロップされたファイルのフルパスを入力します。" " で囲むと良いです。複数ある場合はスペースをはさんでそれぞれを" " で囲みます。
この画面のUIや表示されている項目名はVisual Studioのバージョンによって異なります。
別の方法としては、Visual Studioの外でexeファイルにファイルをドロップして起動した後で、Visual Studioからそのアプリケーションにアタッチしてデバッグすることができます。
起動後のアプリケーションにアタッチするには、Visual Studioの[デバッグ]メニューから、[プロセスにアタッチ]で、プロセスの一覧から目的のアプリケーションを選択して「アタッチ」ボタンをクリックします。
あらかじめVisual Studioでソースコードが開かれた状態で、かつ、exeのフォルダーにpdbファイルがあるとスムーズです。
参考:冒頭の動画のアプリケーションのプログラム
Windowsフォームアプリケーションで作りました。
Public Class
Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.Location = New Point(100, 100) End Sub Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown Label2.Text = Environment.GetCommandLineArgs(1) End Sub End Class |
参考
コマンド プロンプト (cmd.exe) のコマンドライン文字列の制限
コマンド プロンプト (Cmd.exe) へ 8192 文字以上の引数を渡した場合に発生する現象
https://support.microsoft.com/ja-jp/help/2823587
VB6では「起動時にドロップされたファイルを受け取る」を参照。