Как открыть несколько файлов, используя "открыть с помощью" VB.net? (аргументы командной строки)
У меня есть приложение, которое может читать определенные типы файлов, и оно у меня работает так, что если вы действительно "открываете" из окон, оно автоматически запускает приложение и открывает выбранный файл.
К сожалению, я не могу заставить это работать больше чем для одного файла.
System.Environment.GetCommandLineArgs() противоречит следующему: System.Environment.GetCommandLineArgs(0) = имя и путь к.exe System.Environment.GetCommandLineArgs(1) = имя и путь к первому файлу, выбранному для открытия
System.Environment.GetCommandLineArgs(). Длина равна 2, когда пользователь пытается открыть 1 файл, что имеет смысл, поскольку первым аргументом является сам файл.exe, а вторым - путь к файлу, но он не увеличивается до 3, если пользователь пытается открыть 2 файла... это означает, что System.Environment.GetCommandLineArgs(2) никогда не заполняется
Вот некоторый пример кода, который показывает проблему: он не распознает ни один файл или один открытый файл, но если вы попытаетесь открыть несколько файлов, он покажет только первый.
Private Sub Form_Main_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Me.Show()
' Check if the user is opening a file upon startup
If System.Environment.GetCommandLineArgs().Length > 1 Then
Dim i As Integer
'this outputs the exe path and the the first file, if it exists, but never the 2nd file...
'For i = 0 To System.Environment.GetCommandLineArgs().Length - 1
' MsgBox(System.Environment.GetCommandLineArgs(i))
'Next
'this outputs the first file, if it exists, but never the 2nd file...
For i = 1 To System.Environment.GetCommandLineArgs().Length - 1
MsgBox(System.Environment.GetCommandLineArgs(i))
Next
End If
End Sub
Есть что-то, чего мне не хватает? Есть ли альтернатива использованию System.Environment.GetCommandLineArgs()
Кроме того, я заметил, что у меня действительно может быть несколько командных аргументов, если я укажу их в ярлыке для.exe, например, установите Target:
"C:\Program Files\Reader\Reader.exe" -today -tommorow
когда я запускаю его таким образом, я получаю:
System.Environment.GetCommandLineArgs().Length = 3
System.Environment.GetCommandLineArgs(0) = "C:\Program Files\Reader\Reader.exe"
System.Environment.GetCommandLineArgs(1) = "-today"
System.Environment.GetCommandLineArgs(2) = "-tomorrow"
чего я и ожидал...
Если это помогает, я использую Windows XP
1 ответ
Из того, что я могу найти, Windows не будет отправлять несколько имен файлов в одной командной строке, когда вы выбираете несколько файлов в проводнике. Для некоторых приложений он будет запускаться как отдельный экземпляр программы и передавать каждому экземпляру один из файлов.