我有一个程序,将命令行parameter passing给一个可执行文件的关联文件(即关联的文件扩展名)。 可执行文件永远不会收到参数。 但是,如果直接启动可执行文件并将其传递给关联文件的path和参数,那么它将同时接收文件path和参数。
我正在开始使用关联的文件:
System.Diagnostics.Process.Start(filepath, arguments)
预先感谢所有的帮助。
-编辑
基本上,我有一个编程语言解释器,需要接收由C#程序传递给它的命令行参数。
如果我使用C#程序启动代码文件,则解释器将启动,但不会接收由C#程序传递给代码文件的命令行参数。
所以总共有三个文件:
另外,直接启动解释器不是一个选项,因为它不在每台计算机上的相同文件path上。
我希望这是更清晰的,但我不能发布的源代码做法律限制。
您可以尝试 (未经测试)更改文件关联(在高级窗格中)以在参数中包含%2%3等(通常它只包含%1) – 但是,这涉及客户端的更改,更重要的是将参数传递给文档的整个想法都假定你有相同的观察者(即参数是合理的)。
国际海事组织,更好的选择是明确启动exe文件,通过文件(和其他人)的论据。
例:
接收器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的额外参数。 但是很多客户端配置!