我有一个程序将命令行参数传递给可执行文件的关联文件(即关联文件扩展名)。可执行文件从不接收参数。但是,如果我直接启动可执行文件并将相关文件的路径和参数传递给它,那么它会同时接收文件路径和参数。
- 操作系统:Windows XP
- 编程语言:C#
我正在使用以下方式启动相关文件:
System.Diagnostics.Process.Start(filepath, arguments)
提前感谢所有帮助。
-编辑
基本上,我有一个需要接收 C# 程序传递给它的命令行参数的编程语言解释器。
如果我使用 C# 程序启动代码文件,解释器将启动,但不会接收 C# 程序传递给代码文件的命令行参数。
所以一共有三个文件:
- 口译员
- 代码文件
- 程序试图像启动程序一样启动代码文件
此外,直接启动解释器也不是一种选择,因为它在每台计算机上的文件路径都不相同。
我希望这更清楚,但由于法律限制,我不能发布源代码。
最佳答案
您可以尝试 (未测试)更改文件关联(在高级 Pane 中)以在参数中包含 %2 %3 等(通常它只包含 %1 ) - 然而,这涉及客户端的更改,并且(更重要的是)将参数传递给文档的整个想法假定您有相同的查看器(即参数是合理的)。
IMO,更好的选择是显式启动 exe,将文档(和其他文档)作为参数传递。
例子:
receiver 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。但是客户端配置很多!
关于c# - 是否可以通过关联文件将命令行参数传递给可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1036875/