我一直在寻找可能的解决方案和解释,但我真的找不到任何东西。
以下命令正在从 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-command 和一个简单的替代方法,我会喜欢的,但我还没有看到任何东西。
编辑:忘记添加我要发送到打印机的文件是 pcl 文件。
Edit2:当我在没有应用隐藏窗口样式和 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();
如果用户单击表单中的按钮执行上述代码,则该代码有效。所以我决定将我的代码更改为作为托盘应用程序运行,因为我认为这可能会解决问题 - 但它似乎仍然拒绝运行。由触发的计时器或另一个线程运行它可能是某种问题吗?或者也许与这些方法的权利有关?