是否可以通过关联文件将命令行参数传递给可执行文件?

时间:2009-06-24 07:26:06

标签: c# .net windows command-line

我有一个程序将命令行参数传递给可执行文件的关联文件(即关联文件扩展名)。可执行文件永远不会收到参数。但是,如果我直接启动可执行文件并将其传递给关联文件和参数的路径,那么它将接收文件路径和参数。

  • 操作系统:Windows XP
  • 编程语言:C#

我使用以下方式启动相关文件:

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

提前感谢所有帮助。

- 编辑

基本上,我有一个编程语言解释器,需要接收由C#程序传递给它的命令行参数。

如果我使用C#程序启动代码文件,解释器将启动,但不会收到C#程序传递给代码文件的命令行参数。

所以总共有三个文件:

  1. 翻译
  2. 代码文件
  3. 试图启动代码文件的程序,好像它是一个程序
  4. 此外,直接启动解释器不是一个选项,因为它不是位于每台计算机上的同一文件路径上。

    我希望这更清楚,但我不能将源代码发布到法律限制。

1 个答案:

答案 0 :(得分:1)

您可以尝试 (未经测试)更改文件关联(在高级窗格中)以在参数中包含%2%3等(通常它只包含%1 ) - 但是,这涉及客户端的更改,并且(更重要的是)将参数传递给文档的整个想法假设您具有相同的查看器(即参数是合理的)。

IMO,更好的选择是显式启动exe,将doc(和其他其他)作为参数传递。

示例:

receiver 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。但是很多客户配置!