参数不起作用的C#进程

时间:2014-06-13 17:46:35

标签: c#

ProcessStartInfo psi = new ProcessStartInfo();
psi.CreateNoWindow = false;
psi.UseShellExecute = false;
psi.FileName = "convert.exe";
psi.WorkingDirectory = @"C:\Users\Der\Downloads\Wunderground_API_Test\Wunderground_API_Test\Wunderground_API_Test\";
psi.Arguments = " icone.gif -fuzz 10% -transparent white icone.ico";
Process.Start(psi);

如果我尝试运行,则没有任何反应,但如果转到该路径并键入convert.exe icone.gif -fuzz10% -transparent10% white icone.ico则可行。我做错了什么?

3 个答案:

答案 0 :(得分:2)

我放弃并做了一个蝙蝠文件,但它确实有效。

        var p = new System.Diagnostics.Process();
        p.StartInfo.FileName = @"C:\Users\LL\Downloads\Wunderground_API_Test\Wunderground_API_Test\Wunderground_API_Test\icone.bat";
        p.StartInfo.WorkingDirectory = @"C:\Users\LL\Downloads\Wunderground_API_Test\Wunderground_API_Test\Wunderground_API_Test\";
        p.StartInfo.RedirectStandardOutput = true;
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.CreateNoWindow = true;
        p.Start();
        p.WaitForExit();

答案 1 :(得分:1)

所以,在我的LINQPad机器上试试这个,我想这可能是对工作目录的误解。工作目录不是文件的位置,它是文件应该认为它正在运行的位置。尝试删除该行并在FileName中指定完整路径。这对我有用。

答案 2 :(得分:1)

这是因为C#将 StartInfo 参数作为Unicode传递,而程序“convert.exe”不会处理Unicode参数的解释。虽然通过批处理文件以您的方式调用它,但不会将参数作为Unicode传递。

以下链接看起来像是解决了您的问题。使用代码示例。

Application started by Process.Start() isn't getting arguments