C#打开文件使用关联的应用程序传递参数
我正在尝试启动为扩展名注册的默认应用程序,指定其他参数:
ProcessStartInfo p = new ProcessStartInfo(); p.Arguments = "myargument"; p.FileName = "file.ext"; Process.Start(p);
应用程序开始正确打开指定的文件。 问题是它只获得一个参数(文件名),完全忽略了额外的“参数”。
有可能做我想要的吗? 难道我做错了什么?
在此先感谢您的帮助,
保罗
我相信这是预料之中的。 在幕后,Windows正在注册表中找到默认应用程序并创建一个新进程并将文件名传递给它。 如果我转到命令提示符并输入“filename.ext参数” ,我的参数不会传递给应用程序,我会得到相同的行为。
您可能需要做的是通过查看注册表来自己找到默认应用程序。 然后,您可以使用参数启动该过程,而不是尝试从文件类型关联开始。 这里有一个关于如何在注册表中找到默认应用程序的答案:
查找在Windows上打开特定文件类型的默认应用程序
究竟什么是你的“论据”,它是否有空格,反斜杠等?
Process process = new Process(); process.StartInfo.FileName = @"C:\process.exe"; process.StartInfo.Arguments = @"-r -d something else"; process.StartInfo.CreateNoWindow = false; process.StartInfo.UseShellExecute = false; process.Start();
你有什么理由不能启动应用程序,然后在你的参数中使用扩展名和参数吗?
我认为更简单的方法是使用cmd命令
void LaunchAssociatedProgram(string filename) { Process.Start( @"cmd.exe", "/C start "+ filename ); }
编辑:
我不知道它是否适用于参数,但我正在寻找启动相关程序…
- 我们如何在wpf中的文本框上放置整数validation
- EF:在DbContext上禁用“AutoDetectChangesEnabled”和“ProxyCreationEnabled”时,从多对多关系创建/删除关系