Как открыть несколько файлов, используя "открыть с помощью" 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 не будет отправлять несколько имен файлов в одной командной строке, когда вы выбираете несколько файлов в проводнике. Для некоторых приложений он будет запускаться как отдельный экземпляр программы и передавать каждому экземпляру один из файлов.

Другие вопросы по тегам