我一直在寻找了一段时间的可能解决方案和解释,但我真的不能找到任何东西。
下面的命令正在从一个Windows服务运行。 如果直接在CMD中使用的相同命令执行功能。 它不返回任何错误或任何其他为此事。
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C lpr.exe –S " + printerIP + " –P " + deviceName + " –o l " + fInfo.DirectoryName + @"\" + fInfo.Name;
process.StartInfo = startInfo;
process.Start();
这可能只是我缺少一些小的事情,但我就是不能看到它。 如果有可能使用了一个简单替代的LPR命令来绕去,我很想去,但我还没有看到任何迹象。
编辑:忘了补充一点,我试图向打印机发送的文件是一个PCL文件。
EDIT2:当我没有隐藏windowstyle运行命令和WaitForExit(5000)应用于过程,然后我似乎无法看到任何书面命令行 - 这似乎是空的命令提示符所有。
编辑3:现在已经玩弄周围有点这个,我已经想出了以下内容:
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "lpr";
startInfo.Arguments = " –S " + printerIP + " –P " + deviceName + " –o l " + fInfo.DirectoryName + @"\" + fInfo.Name;
process.StartInfo = startInfo;
process.Start();
如果通过点击的形式的按钮的用户执行上述代码工作。 所以,我决定改变我的代码插入运行的托盘应用,看到我想这可能解决问题 - 但它似乎仍然拒绝正在运行。 难道是某种问题,它被触发的计时器或其他线程上运行? 或许是与这些方法的权利?