2009-06-24 50 views
2

我有一個程序將命令行參數傳遞給可執行文件的關聯文件(即關聯的文件擴展名)。可執行文件從不接收參數。但是,如果我直接啓動可執行文件並將其傳遞給關聯文件和參數的路徑,那麼它將同時接收文件路徑和參數。是否可以通過關聯文件將命令行參數傳遞給可執行文件?

  • 操作系統:Windows XP中
  • 編程語言:C#

我開始使用相關的文件:

System.Diagnostics.Process.Start(filepath, arguments) 

預先感謝所有幫助。

-edit

基本上,我有一種編程語言解釋器,需要接收由C#程序傳遞給它的命令行參數。

如果我使用C#程序啓動代碼文件,則解釋器將啓動,但不會收到由C#程序傳遞給代碼文件的命令行參數。

所以總共有三個文件分別是:

  1. 解釋
  2. 代碼文件
  3. 程序試圖啓動代碼文件,就像它是一個程序

另外,直接啓動解釋器不是一種選擇,因爲它不位於每臺計算機上相同的文件路徑上。

我希望這更清楚,但我不能發佈源代碼做法律限制。

+0

請合作!你是否發佈了一些資料,因爲我並不完全「知道」你的內容。 – bugmagnet 2009-06-24 07:31:15

+0

在我看來,他在做Process.Start(「file.xls」,「arg1 arg2」); – 2009-06-24 07:35:29

回答

1

你可以嘗試(未經測試)更改文件關聯(上先進的面板),以包括%2%,在參數(通常它只是包含%1)3等 - 但是,這涉及在變化客戶端,以及(更重要的是)將參數傳遞給文檔的整個想法都假設您具有相同的查看器(即參數是合理的)。

IMO,更好的選擇是明確啓動exe,傳遞doc(和其他其他)作爲參數。

實施例:

接收機的exe(只是顯示接收到的命令的參數):

static class Program { 
    [System.STAThread] 
    static void Main(string[] args) { 
     System.Windows.Forms.MessageBox.Show(string.Join("|", args)); 
    } 
} 

然後:創建了一個「foo中。flibble「文件,右鍵單擊/打開並與我的接收器關聯;進入文件關聯,」flibble「,高級,」打開「,編輯並添加%2%3%4

然後在單獨的exe文件中:

Process.Start(@"c:\foo.flibble", "test of args"); 

其中顯示:

c:\foo.flibble|test|of|args 

所以這現已通過了額外的參數通過文件exe文件,但很多客戶端配置的

相關問題