Visual Studio 2010 - vb.net 应用程序适用于拖动到 EXE 上的文件,但如果文件路径中有空格,则会崩溃



我正在vb.net中开发一个应用程序。你可以将任何类型的文件拖到exe上,弹出一个窗口,其中包含该文件的一些选项,然后它将文件保存到不同的位置,并使用一些SQL魔法等。它在大多数情况下都很好。

我发现的唯一问题是,如果文件的路径包含任何空格,应用程序将立即崩溃,并显示错误窗口:https://i.stack.imgur.com/mVamO.png

我正在使用:专用文件名为String=命令$它位于表单的类声明中,而不是子/函数中。如果没有这一行,我的程序运行得很好(尽管没有用,但没有访问文件)。我也尝试过(我想就是这样,我现在没有代码):专用文件名为String=Environment.CommandLine它也有同样的问题。

那么,在vb.net中,有没有一种方法可以将文件拖到exe上并使用该路径名,即使路径名中有空格?

如果拖动文件的路径包含空格,则

Windows将在传递的命令行参数周围加双引号。问题是,你正在使用一种古老的VB6方法来检索参数,你会看到双引号。如果.NET针对哪个对象,则双引号在路径名中无效。使用此:

        Dim path = Command$.Replace("""", "")

或者.NET方式:

Sub Main(ByVal args() As String)
    If args.Length > 0 then
        Dim path = args(0)
        MsgBox(path)
        '' do something with it..
    End If
End Sub

如果可能的话,一定要发布你的代码,因为它几乎是任何可能出错的东西。通常,在收到CommandLine Arg后,我会尝试使用System.IO.File包装器,并使用内置机制来验证文件,然后尽可能使用IO进一步处理它。如果您试图直接操作文件,那么空间可能会成为一个问题。

此外,还有一种方法可以将长文件路径+名称转换为旧DOS的8.3神奇文件路径+姓名。然而,我将进入R&D在我看到你在代码中做什么之后。

最新更新