strSaveImage是一个批处理文件。执行后会产生一个图形文件。如下片段代码,可以正确产生一个图形文件。
System.Diagnostics.Process pSaveImage=new Process();
pSaveImage.StartInfo.FileName=strSaveImage;
pSaveImage.StartInfo.WindowStyle=ProcessWindowStyle.Hidden;
pSaveImage.StartInfo.CreateNoWindow=true;
pSaveImage.Start();
if (File.Exists(ImageFileName))
 blnSaveImage=true;批处理其实就是一个执行程序和参数。但把批处理文件替换成以下代码,无论如何都产生不了图形出来。
pSaveImage.StartInfo.FileName="执行程序名";
pSaveImage.StartInfo.Arguments="参数";请问为什么会出现这种情况?因为我不想在产生图形前,动态创建批处理文件,然后再删除这个批处理文件,因为批处理的参数动态的,而且不想让人看到这个程序执行的参数内容等。还有,在Windows2003下执行System.Diagnostics.Process.Start("执行程序 参数")可以成功,但在Windows2000下非要System.Diagnostics.Process.Start("执行程序","参数")才可以成功,否则总是提示没法找到程序,程序放在Bin下同路径。

解决方案 »

  1.   

    批处理的写法参照
    http://dotnet.aspx.cc/ShowDetail.aspx?id=EBE38F5B-BD7E-42C2-73E4-49616F98BE3D
      

  2.   

    问题不是批处理的写法。只是如果只用System.Diagnostics.Process.Start的话,会弹出一个窗体一闪而过,没法做到无窗体运行模式。而且试了下如下代码:
    System.Diagnostics.Process pSaveImage=new Process();
    pSaveImage.StartInfo.FileName="cmd.exe /c " + strArguments;//strSaveImage;
    pSaveImage.StartInfo.WindowStyle=ProcessWindowStyle.Hidden;
    pSaveImage.StartInfo.CreateNoWindow=true;
    pSaveImage.Start();
    pSaveImage.WaitForExit();
    总是提示系统找不到文件。
      

  3.   

    而且换成
    pSaveImage.StartInfo.FileName="cmd.exe ";// + strArguments;//strSaveImage;
    pSaveImage.StartInfo.Arguments="/c " + strArguments;可以完成执行而且没有错误,但没有产生图片文件。因为本来执行完这一命令后会产生一图片的。只有把pSaveImage.StartInfo.FileName="批处理"才会产生图片,即表示执行成功。