从 Windows 服务打印 pcl 文件的 LPR 命令不起作用(现在是托盘应用程序)

2024-04-13

我已经四处寻找可能的解决方案和解释一段时间了,但我找不到任何东西。

以下命令正在从 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();

如果用户单击表单中的按钮来执行上述代码,则该代码将起作用。因此,我决定将代码更改为作为托盘应用程序运行,因为我认为这可能会解决问题 - 但它似乎仍然拒绝运行。是否是由触发的计时器或另一个线程运行时出现某种问题?或者也许与这些方法的权利有关?


将您的代码更改为:

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 C:\windows\Sysnative\lpr.exe –S " + printerIP + " –P " + deviceName + " –o l " + fInfo.DirectoryName + @"\" + fInfo.Name;
process.StartInfo = startInfo;
process.Start();

问题是您正在尝试从 32 位 cmd.exe 应用程序访问 64 位应用程序 (lpr)。简单的解决方案是使用 sysnative 目录。

http://www.samlogic.net/articles/sysnative-folder-64-bit-windows.htm http://www.samlogic.net/articles/sysnative-folder-64-bit-windows.htm

如果您在 Windows 资源管理器中看不到“Sysnative”文件夹 启动 Windows 资源管理器并打开硬盘上的 Windows 文件夹, 您可能会注意到 Sysnative 文件夹未显示。主要原因 这是因为 Windows 资源管理器是一个 64 位程序(当在 64位Windows),并且Sysnative文件夹仅可见 可通过 32 位软件访问。如果 64 位软件需要访问 Windows 中的 64 位系统文件夹,唯一的选择是使用 System32 文件夹名称(例如:C:\Windows\System32)。

使用“Sysnative”文件夹将帮助您访问 64 位工具 32 位代码 64 位 Windows 中的某些工具仅存在于 64 位中 版本;没有可用的 32 位版本。以及其中一些工具 位于 64 位 System32 文件夹中。 nbtstat 就是一个例子 用于帮助排除 NetBIOS 名称解析故障的工具 问题。如果您尝试从 32 位代码运行 nbtstat 工具(例如 来自应用程序或脚本的示例)并使用类似的路径 C:\Windows\System32,您将收到“文件未找到”错误。文件 找不到;尽管 Windows 资源管理器显示 nbtstat 程序文件实际上位于C:\Windows\System32文件夹中。
这个(有点令人困惑)问题的解决方案是包括 当您要运行时,文件夹路径中的虚拟Sysnative文件夹 工具。例如这样:C:\Windows\Sysnative\nbtstat.exe 上面的文件路径将使您可以从以下位置访问 64 位 nbtstat 工具 32 位应用程序或来自 32 位脚本。我们推荐您阅读 这篇文章/博客文章(位于 Scottie’s Tech.Info)以获取更多详细信息 对这个。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Windows 服务打印 pcl 文件的 LPR 命令不起作用(现在是托盘应用程序) 的相关文章

  • 异步提交或回滚事务范围

    正如许多人所知 TransactionScope当async await Net 中引入了模式 如果我们尝试使用一些它们就会损坏await在事务范围内调用 现在这个问题已经解决了 感谢范围构造函数选项 a 17527759 1178314
  • WebBrowser Control 导致整个应用程序变得无响应

    我有一个带有嵌入式 Web 浏览器的 C NET 3 5 应用程序 浏览器被设计为指向远程站点 而不是本地站点 一切工作正常 但是当页面响应缓慢时 这会导致我的整个应用程序变得无响应 直到加载页面 我不介意浏览器在执行任务时没有响应 但应用
  • 输出 objdump -t 的输出中的“.hidden”是什么意思?

    Example objdump Logger cpp o t 00000000 g F text 00000000 hidden sti 10 Logger cpp 0b2ae32b 这意味着符号的可见性被隐藏 https develope
  • 为什么在此单元测试中,BackgroundWorker 没有在正确的线程上调用 RunWorkerCompleted?

    backgroundWorker 的全部目的是在执行耗时的任务后更新 UI 组件正如广告所宣传的那样在我的 WPF 应用程序中 但是在我的测试中 回调不会在调用线程上调用 Test public void TestCallbackIsInv
  • esp8266互联网交换机问题

    我正在尝试制作一个门继电器开关系统 我可以通过端口转发从任何地方进行操作 我找到了一个非常有用的指南和代码 我的程序基于 https openhomeautomation net control a lamp remotely using
  • 如何使用 Unity 动态注册通用类?

    我有一个包含很多类 300 和 BaseClass 的程序集 我想用接口注册一个泛型类 统一后 您必须在 Name如果你想解析接口的对象数组 我想要一个对象数组主视图模型自动地 有没有办法通过反射来自动执行此操作 有什么建议么 示例 伪 p
  • Web API 2 中的方法名称约定 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否有 Web API 2 中使用的约定的列表 以这两种方法为例 两者都可以工作 但都没有用属性来装饰 IHttpActionResu
  • 在 C99 中,f()+g() 是未定义还是只是未指定?

    我曾经认为在C99中 即使函数的副作用f and g干扰 虽然表达f g 不包含序列点 f and g将包含一些 因此行为将是未指定的 要么 f 在 g 之前调用 要么 g 在 f 之前调用 我不再那么确定了 如果编译器内联函数会怎样 即使
  • QFileDialog::getOpenFileName 调试时崩溃,显然是由项目名称引起的?

    我遇到了一个让我非常困惑的问题 我在 Windows 7 上使用 Qt Creator 3 1 2 和 Qt 5 3 使用 MSVC 10 0 编译器和 Windows 8 1 调试工具中的 CDB 不确定我是否应该寻找特定于 Window
  • 使用 C# 从文本中删除数字

    我有一个要处理的文本文件 其中有一些数字 我只想要其中的文字 而不是其他任何东西 我成功删除了标点符号 但是如何删除数字呢 我想要使 用 C 代码 另外 我想删除长度大于 10 的单词 如何使用 Reg 表达式来做到这一点 您可以使用正则表
  • 使用 C 通过引用传递数组

    是的 我已经阅读了这个问题和答案 在 C 中通过引用传递数组 https stackoverflow com questions 1106957 pass array by reference in c 我有一个类似的问题 并从该问题中实现
  • 确定所选电子邮件是来自收件箱还是已发送邮件

    我正在编程Outlook 插件并需要确定所选电子邮件是否来自Inbox or Sent Items这样当我将电子邮件保存到数据库中时 我可以使用文件夹 收件箱 或 已发送 来标记电子邮件 我知道我可以将文件夹名称与 收件箱 或 已发送邮件
  • 我们还需要迭代器设计模式吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • MSVC如何在编译期间输出一些内容到“输出”窗口

    有时我看到某些项目在编译期间向输出写入一些内容 在MSVC 中如何实现 thanks use pragma message e g define MESSAGE t message FILE STRINGXXX LINE t define
  • Windows 中的蓝牙 AVRCP 命令会触发哪些事件

    可以这么说 只是在做一些高级侦察 对于我的潘多拉客户 Elpis http elpis adamhaile net 我支持全局媒体键 键盘上的 MediaPlayPause MediaNext 等 并且我希望能够支持AVRCP http e
  • 如何将 .ashx 处理程序与 asp:Image 对象一起使用?

    我有一个 ashx 处理程序 using System using System Web public class Thumbnail IHttpHandler public void ProcessRequest HttpContext
  • 并排显示图像的一半 - OpenGL

    我为两个图像创建了两个纹理 现在我想在opengl中按图像2的左侧部分 完整的图像1 图像2的右侧部分的顺序显示该纹理 我已经做了如下 Image1 显示在 opengl 屏幕的中央 但屏幕的左右部分不正确 应分别显示 image2 的左侧
  • 如何获取 (Linux) 机器的 IP 地址?

    这个问题和之前问的几乎一样如何获取本地计算机的IP地址 https stackoverflow com questions 122208 get the ip address of local computer 问题 但是我需要找到一个的I
  • 为什么删除void*是UB而不是编译错误?

    为什么要通过删除对象void 是未定义的行为 而不是编译错误 void foo void p delete p 这段代码编译并生成代码 尽管有关于 gcc 和 clang 的警告 令人惊讶的是 ICC 没有给出警告 2 5 warning
  • 如何在 C# 中使用 Selenium WebDriver 获取当前窗口的 URL?

    在我的应用程序中 登录时 它会导航到另一个页面 现在我需要在 selenium C 中使用 WebDriver 获取新的 URL 我找不到任何函数来执行此操作 我努力了driver Url driver getLocation and dr

随机推荐

  • Spark 向 S3 写入/读取 - 分区大小和压缩

    我正在做一个实验来了解哪种文件大小对于 s3 和 EMR Spark 表现最好 输入数据 Incompressible data Random Bytes in files Total Data Size 20GB Each folder
  • Linux 上的视频捕获? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我们需要捕捉实时视频并显示easily在 Linux 上 我们需要一个具有简单 API 的廉价卡或 USB 设备 有人想分享一些经验吗 Use the
  • 如何创建卷页动画?

    有什么办法可以模拟这样的事情吗 没有一个 API 可以执行 半页卷曲 之类的操作吗 controller modalTransitionStyle UIModalTransitionStylePartialCurl self present
  • 使用 jQuery 确定复选框是否已选中[重复]

    这个问题在这里已经有答案了 可能的重复 使用 jQuery 检查复选框选中属性 https stackoverflow com questions 901712 check checkbox checked property using j
  • 如何为此 Firebase Android 项目添加“大文本”或“收件箱样式”通知?

    我正在尝试从 Firebase 控制台发送推送通知 目前我可以从 Firebase 控制台向我的虚拟设备发送消息 但如果消息很长 则不会完全显示在通知栏中 这是 Firebasemessagingservice 的代码 import and
  • 无法更新本地预定通知内容

    在一次 WWDC 会议中 我获得了用于更新现有通知的代码片段 我认为这不起作用 正在尝试更新通知内容 首先 我请求待处理的通知UNUserNotificationCenter这总是有效的 然后 我创建新请求以使用现有唯一标识符更新通知 有
  • 如何摆脱警告 .ts 文件是 TypeScript 编译的一部分,但未使用

    我刚刚将角度更新到最新9 0 0 next 4 我没有使用路由 但更新后突然我不断看到此警告 如何删除此警告 警告src war angular src app app routing module ts是其一部分 TypeScript 编
  • 如何制作单一实例表单(而不是申请表)?

    在我的 C 应用程序中 我有一个可以从菜单命令打开的选项对话框 我想确保选项对话框只有一个实例 用户无法在给定时间打开多个选项窗口 而不使其成为模式 此外 如果用户已经打开了此窗口 并且他单击菜单项再次打开它 则应用程序只会使已经可见的表单
  • 什么时候应该调用 glGetError?

    glLoadIdentity http www opengl org sdk docs man xhtml glLoadIdentity xml says GL INVALID OPERATION如果生成glLoadIdentity之间执行
  • Visual Studio 代码覆盖率未显示所有程序集

    我的 SLN 文件中有 20 个项目 我正在通过测试资源管理器运行单元测试并生成代码覆盖率 只有八个项目出现在报道中 见屏幕截图 我正在使用一个 runsettings 文件 其中注释掉了所有 标记的内容 如下所示
  • 忽略空格的查询

    运行查询以便字段中的空格是最好的方法是什么 被忽视 例如 以下查询 SELECT FROM mytable WHERE username JohnBobJones SELECT FROM mytable WHERE username Joh
  • 查找 GIT 中具有特定单词/行的最新提交

    如果我有一个包含最新提交的文件 如下所示 class A String name Mary 在特定的提交中 String name Mary 被更改为String name Bob 问题是 这一行已经被修改了几次 有一次是 John 另一个
  • 上传数据到Meteor/Mongodb

    我有一个 Meteor 应用程序 想将数据 从 csv 上传到流星集合 我已经发现 解决方案 例如集合fs https github com CollectionFS Meteor CollectionFS 处理文件上传 方法用于直接上传
  • 如何在 Windows Azure 上部署 Java 应用程序

    您好 我是一名计算机科学专业三年级学生 我已经在 netbeans 上用 java 创建了一个三年级项目 现在我想将其部署到带有 windows azure 的虚拟机上 重点是 我希望能够在任何连接到互联网的计算机上使用这个应用程序 只需访
  • 单链打印C++

    我正在尝试以 1 2 3 4 etc 格式选择我的链 您可以在下面找到头文件 其中包含节点的布局 我只是对如何循环浏览列表以打印项目感到困惑 任何指导将不胜感激 set h using namespace std include
  • Go:在二进制文件中嵌入静态文件

    这可能是一个非常业余的问题 我正在尝试将静态文件嵌入到二进制文件中 即 html 我该怎么做https github com jteeuwen go bindata https github com jteeuwen go bindata
  • front() 和 begin() 之间的区别

    两者有什么区别front and begin 许多 STL 容器中出现的函数 begin http www cplusplus com reference stl list begin 返回一个可用于迭代集合的迭代器 而front http
  • OnItemCLickListener 在列表视图中不起作用

    Activity班级代码 conversationList ListView findViewById android R id list ConversationArrayAdapter conversationArrayAdapter
  • 从干草堆索引中删除对象

    我使用 django 删除一条记录 r model objects get id 1 r delete 现在我想从索引中删除记录而不重新索引 如何 我无法让remove object工作并且干草堆文档 http django haystac
  • 从 Windows 服务打印 pcl 文件的 LPR 命令不起作用(现在是托盘应用程序)

    我已经四处寻找可能的解决方案和解释一段时间了 但我找不到任何东西 以下命令正在从 Windows 服务运行 如果直接在 cmd 中使用 相同的命令也可以运行 它不会返回任何错误或与此相关的任何其他内容 System Diagnostics