代码之家  ›  专栏  ›  技术社区  ›  MaQleod

my.application.commandlineargs-无法打开文件

  •  0
  • MaQleod  · 技术社区  · 17 年前

    我引用了这条线索及其指向的网站: Opening a file in my application from File Explorer

    到目前为止,我无法使.application.commandlineargs正常工作。每当我在程序中选择要打开的文件时,都会出现一个Windows错误,迫使程序关闭。我只想从my.application.commandlineargs获取文件路径,并将其传递给一个函数,该函数将解析该文件(一个具有各种扩展名的文本文件,即使它与我的程序没有关联),并在richtextbox中显示内容。 我打开文件的功能已完成并正常工作,但如果我尝试对文件使用my.application.commandlineargs,程序将立即崩溃。 下面是我作为测试的代码:

    Private Sub ParseCommandLineArgs()
        If My.Application.CommandLineArgs.Count > 0 Then
            MessageBox.Show(My.Application.CommandLineArgs(0))
        Else
            MessageBox.Show("No args")
        End If
    End Sub
    

    如果我只是打开应用程序,我会收到一个消息框,告诉我没有提供任何参数,如果我尝试使用“open with”我的应用程序来处理任何文件,我的应用程序将崩溃。我在表单加载期间调用了此函数。

    3 回复  |  直到 15 年前
        1
  •  1
  •   Henk Holterman    17 年前

    恐怕这是一个典型的一次性错误,vb.net数组和集合从元素0开始,因此请使用:

     MessageBox.Show(My.Application.CommandLineArgs(0))
    
        2
  •  1
  •   RobS    17 年前

    在应用程序的属性中,选择调试端选项卡,在提供的输入框中添加一些命令行参数,然后从IDE中运行程序。这样,您就可以准确地知道发生了什么错误会导致应用程序崩溃。

        3
  •  0
  •   Chris Tybur    17 年前

    要通过open with context菜单选项调用一个程序很难实时调试,因为它是由操作系统直接启动的。

    它可能有助于了解错误的文本你得到。可能是当windows通过open with调用.net应用程序时,根本不填充my.application.commandlineargs。或者它可能会将文件名放在集合的下面。你可以试试

    For Each s As String In My.Application.CommandLineArgs
        MessageBox.Show(s)
    Next
    

    查看到底有多少项及其值。在任何情况下,我都会在google上搜索如何截取使用open with发送给应用程序的上下文参数。