簡體   English   中英

是否可以通過關聯文件將命令行參數傳遞給可執行文件?

[英]Is it possible to pass command-line arguments to an executable via an associated file?

我有一個程序,它將命令行參數傳遞給可執行文件的關聯文件(即關聯文件擴展名)。 可執行文件從不接收參數。 但是,如果我直接啟動可執行文件並將路徑傳遞到關聯文件和參數,那么它將接收文件路徑和參數。

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

我正在使用以下命令啟動關聯文件:

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

在此先感謝您提供的所有幫助。

-編輯

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

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

因此,共有三個文件:

  1. 口譯員
  2. 代碼文件
  3. 該程序試圖像啟動程序一樣啟動代碼文件

而且,直接啟動解釋器不是一種選擇,因為它不是位於每台計算機上的相同文件路徑中。

我希望這一點更加清楚,但是我不能將源代碼發布到法律限制范圍內。

您可以嘗試 (未經測試)將文件關聯(在高級窗格上更改為在參數中包含%2%3等(通常只包含%1)-但是,這涉及客戶端的更改,並且(更重要的是)將參數傳遞給文檔的整個想法都假定您具有相同的查看者(即,參數明智)。

IMO,一個更好的選擇是顯式啟動exe,並將doc(和其他)作為參數傳遞。

例:

接收器exe(僅顯示接收到的命令參數):

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

然后:創建一個“ foo.flibble”文件,右鍵單擊/打開並與我的接收器關聯; 進入文件關聯,“輕拂”,高級,“打開”,編輯並添加了%2%3%4

然后在單獨的exe中:

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

這表現了:

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

因此,這通過文檔將多余的參數傳遞給了exe。 但是客戶端配置很多!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM