我已经四处寻找可能的解决方案和解释一段时间了,但我找不到任何东西。
以下命令正在从 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 文件。
编辑2:
当我在没有隐藏窗口样式和 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();
如果用户单击表单中的按钮来执行上述代码,则该代码将起作用。因此,我决定将代码更改为作为托盘应用程序运行,因为我认为这可能会解决问题 - 但它似乎仍然拒绝运行。是否是由触发的计时器或另一个线程运行时出现某种问题?或者也许与这些方法的权利有关?