簡體   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