Process.Start不执行命令

时间:2015-08-21 18:24:32

标签: c# imagemagick-convert

我正在使用ImageMagick C#工具通过从C#调用可执行文件将PDF转换为JPG。我相信我正确设置了命令,但它没有执行;它只是通过Process.Start(startInfo)而不执行它。我确实看到命令提示符弹出但没有任何反应。

string PNGPath = Path.ChangeExtension(Loan_list[f], ".png");
string PDFfile = '"' + Loan_list[f] + '"';
string PNGfile = '"' + PNGPath + '"';
string arguments = string.Format("{0} {1}", PDFfile, PNGfile);
ProcessStartInfo startInfo = new ProcessStartInfo(@"C:\Program Files\ImageMagick-6.9.2-Q16\convert.exe");
startInfo.Arguments = arguments;
Process.Start(startInfo);

我不确定是不是因为我之前添加到每个参数的双引号,但在评论并再次运行之后,它仍然会被跳过。有什么想法吗?

编辑:为了增加一些清晰度,我期待PDF中的JPG文件,但我看不到这部分代码的输出文件。我在命令提示符下运行以下命令将PDF转换为JPG

"C:\Program Files\ImageMagick-6.9.2-Q16\convert.exe" "C:\Users\rwong\Desktop\RoundPoint\1000965275\1000965275_157_Credit File_10.PDF" "C:\Users\rwong\Desktop\RoundPoint\1000965275\1000965275_157_Credit File_10.png"

为了清楚起见,我在代码中明确调用了convert.exe。该命令在命令提示符下正常工作,但在将结构复制到C#时它没有做任何事情。我看到代码步入它但它继续没有错误。

Edit2:根据请求,下面是Process Exit代码的代码和输出

string PNGPath = Path.ChangeExtension(Loan_list[f], ".png");
string PDFfile = '"' + Loan_list[f] + '"';
string PNGfile = '"' + PNGPath + '"';
try
{
    Process myprocess = null;
    string[] arguments = { PDFfile, PNGfile };
    myprocess=Process.Start(@"C:\ProgramFiles\ImageMagick6.9.2Q16\convert.exe", String.Join(" ", arguments));
    Console.WriteLine("Process exit code: {0}", myprocess.ExitCode);
}
catch (Exception ex)
{
    Console.WriteLine(ex);
}

处理退出代码:1

1 个答案:

答案 0 :(得分:1)

假设你是对的并且存在问题(而不是刚刚快速执行并退出的过程),你可以按如下方式检查返回码:

if (Process.Start(startInfo) == null)
{
    int lastError = Marshal.GetLastWin32Error();
}

然后你去这里查找错误代码:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms681381(v=vs.85).aspx

希望该供应商实际上在失败时设置错误代码(它们可能会也可能不会)。