繁体   English   中英

解析Windows上下文菜单中的Main Args []字符串

[英]parse Main Args[] string from windows context menu

我使用以下代码来实现由我的应用程序打开的右键单击文件。 我的目标是将该文件的路径放入我的程序中。

我用:

public static string path = "";

static void Main(string[] args)
{
  if (args.Length > 0)
  {
     path = args[0];      
  }
}

然后我使用变量path ,它是应用程序通过上下文菜单打开的文件。

问题:

当文件名不包含任何空格时,导入文件路径没有任何问题。 但是当文件名包含任何空格时,除了它之外显示的文件名除去了文件名中第一个空格之后的字母。

例:

  1. fileName.pdffileName.pdf
  2. fileName blah blah.pdffilename

第二个示例显示包含空格的文件未按原样导入。

因此,如果有任何想法如何解析包含空格的文件而其名称没有任何问题。

这是因为操作系统会尝试为您拆分命令行参数,但如果您不在正确的位置放置引号,则可能会出错。 默认情况下,以下命令行

MyConsoleApp.exe FileName blah blah.pdf

将导致args包含3个字符串FileNameblahblah.pdf (由空格分隔)

例如,解决此问题的最常见解决方案是在调用应用程序时用引号括起参数

MyConsoleApp.exe "FileName blah blah.pdf"

这将导致args长度为1,第一个字符串的值为FileName blah blah.pdf (操作系统删除了额外的引号)。

另一种方法是使用Environment.CommandLine属性获取用于调用应用程序的完整未解析命令行,并手动解析该字符串。 这为您提供了更大的灵活性(因为在使用传递给Main的args参数时,并不总是能够识别参数是否被引号括起来),但是更省力 - 您应该确保在启动应用程序时使用引号。

有人发布了一个完美的答案,但是在我提出它之前将其删除并使其成为正确的答案。

答案是我必须将“%1”更改为“%0”并且它有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM