if(outFilePath == null)
                outFilePath = Path.GetDirectoryName(inFilePath) + "/" + Path.GetFileNameWithoutExtension(inFilePath) + ".wav";                Process p = new Process();
                p.StartInfo.FileName = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "ffmpeg.exe";//需要启动的程序名   
                p.StartInfo.RedirectStandardError = false;
                p.StartInfo.UseShellExecute = true;
                //p.ErrorDataReceived += new DataReceivedEventHandler(Output);
                p.StartInfo.Arguments = " -y -i " + inFilePath + " -vn -ar 44100 -ac 1 -ab 96 -f wav " + outFilePath;//启动参数   
                p.StartInfo.CreateNoWindow = true;
                p.Start();//启动
                p.Close();
                p.Dispose();//释放资源
以上这段代码,在win7下开发的,win7下运行起来一点问题没有,但是把程序放到XP上,就不行了。没有报任何异常。
我自己检查了一下,调用的程序是打开了的,值不够一闪而过,没有参数里的相关操作。请问如何解决啊。

解决方案 »

  1.   

    Win7的Framework什么版本,XP下装了没?
      

  2.   

     p.Start();//启动
      p.Close();
      p.Dispose();//释放资源也许是这样,打开又关闭了,所以一闪而过
      

  3.   

    回楼上不是的,整个流程没有出现这种情况,我检查得很细致。
    XP和win7的Framework版本一样,,整个程序在运行的过程除了调用不成功外,没有其他问题
      

  4.   

    哥们,你别用程序,你单独把ffmpeg.exe在你的 WIN7 和 XP 下面 分别运行一下快捷方式或者 CMD 可以输入参数的这和C#没关系的
    还想说一句:哥们换个头像吧,真心的
      

  5.   

    呵呵,
    单独运行EXE试试什么情况
    LS说的挺对
      

  6.   

    找了N久,终于找到问题所在了。就是process的startInfo。arguements也就是启动参数,是默认以空格界限,将string切割成参数数组。XP的桌面路径就是含有空格的,所以在XP下就找不到文件。我现在很郁闷,这个问题怎么解决啊。p.StartInfo.Arguments =字符串。
      

  7.   

    哈哈,成功解决。
    用   \"  将可能存在空格的路径包起来。比如 c:\program files\aaa.txt原本是这样的 “c:\program files\aaa.txt”现在这样: “\”c:\program files\aaa.txt\"";
    就可以了,对于所有process调用中,参数有空格的情况都适用。