我正在尝试启动为指定附加参数的扩展注册的默认应用程序:
ProcessStartInfo p = new ProcessStartInfo();
p.Arguments = "myargument";
p.FileName = "file.ext";
Process.Start(p);
应用程序开始正确打开指定的文件。问题是它只得到一个参数(文件名),完全忽略了额外的“参数”。
有可能做我想做的事吗?难道我做错了什么?
提前感谢您的帮助,
保罗
我正在尝试启动为指定附加参数的扩展注册的默认应用程序:
ProcessStartInfo p = new ProcessStartInfo();
p.Arguments = "myargument";
p.FileName = "file.ext";
Process.Start(p);
应用程序开始正确打开指定的文件。问题是它只得到一个参数(文件名),完全忽略了额外的“参数”。
有可能做我想做的事吗?难道我做错了什么?
提前感谢您的帮助,
保罗
我相信这是意料之中的。在幕后,Windows 在注册表中查找默认应用程序并创建一个新进程并将您的文件名传递给它。如果我转到命令提示符并键入"filename.ext argument",我会得到相同的行为,即我的参数不会传递给应用程序。
您可能需要做的是通过查看注册表自己找到默认应用程序。然后您可以使用参数开始该过程,而不是尝试通过文件类型关联开始。这里有一个关于如何在注册表中找到默认应用程序的答案:
你的“论点”到底是什么,它有空格、反斜杠等吗?
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 );
}
编辑:
我不知道它是否适用于参数,但它是我正在寻找启动相关程序的东西......