我有一个可以读取某些类型文件的应用程序,并且它可以正常工作,因此如果您从 Windows 中“打开”,它会自动启动应用程序并打开所选文件。
不幸的是,我不能让它为多个文件工作。
System.Environment.GetCommandLineArgs() 包含以下内容: System.Environment.GetCommandLineArgs(0) = .exe 的名称和路径 System.Environment.GetCommandLineArgs(1) = 选择要打开的第一个文件的名称和路径
System.Environment.GetCommandLineArgs().Length 在用户尝试打开 1 个文件时为 2,这是有道理的,因为第一个参数是 .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 的快捷方式中指定它们,我确实可以有多个命令参数,例如,设置目标:
"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