代码:
using p = new Process();
p.StartInfo.UseShellExecute = true;
p.StartInfo.Verb = "printto";
p.StartInfo.FileName = fileName;
p.StartInfo.Arguments = printerName;
p.Start();
p.WaitForExit(20000);
有时投掷:
"System.InvalidOperationException:没有进程与此对象关联"来自CCD_ 1线。
我们从事件日志中捕捉到了这一点,所以它确实是这样发生的。我很困惑我们怎么会在";无过程";紧接在CCD_ 2之后的状态。我已经设法使不可运行的进程无法运行,但通过了p.Start()
的预检,但它们总是创建一个句柄,所以.WaitForExit()
总是通过报告它已经退出来工作。
我很困惑。ShellExecuteEx可能调用了某种DDE函数或其他无法识别进程的函数,但进程API似乎不支持该操作。调用代码也根本没有打开窗口,那么DDE源是什么?
我其实不需要在这里等;我只需要检测它是否是DDE或其他无稽之谈,否则只需少量睡眠就可以做我需要的事情。
有一个差点上当的结果是直接调用iexplore进程,我不能使用它。
您需要确保FilePath指向可打印文档(如pdf文档或rtf)。并将printerName放入Phrasesp.StartInfo.Arguments = """ + printerName + """;
中,否则打印机将抛出错误。