我有一个程序将命令行参数传递给可执行文件的关联文件(即关联文件扩展名)。可执行文件永远不会收到参数。但是,如果我直接启动可执行文件并将其传递给关联文件和参数的路径,那么它将接收文件路径和参数。
我使用以下方式启动相关文件:
System.Diagnostics.Process.Start(filepath, arguments)
提前感谢所有帮助。
- 编辑
基本上,我有一个编程语言解释器,需要接收由C#程序传递给它的命令行参数。
如果我使用C#程序启动代码文件,解释器将启动,但不会收到C#程序传递给代码文件的命令行参数。
所以总共有三个文件:
此外,直接启动解释器不是一个选项,因为它不是位于每台计算机上的同一文件路径上。
我希望这更清楚,但我不能将源代码发布到法律限制。
答案 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。但是很多客户配置!