从 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 命令不起作用(现在是托盘应用程序) 的相关文章

  • 在 C# 中使用“using”关键字避免多次处置的最佳实践

    当变量是 IDisposable 时 我们有using关键字来管理处置 但是如果我们在方法中返回值怎么办 using twice StringContent stringToStringContent string str using St
  • WebClient.DownloadDataAsync 冻结了我的 UI

    我在 Form 构造函数中的 InitializeComponent 之后有以下代码 using WebClient client new WebClient client DownloadDataCompleted new Downloa
  • 锁定 ASP.NET 应用程序变量

    我在 ASP NET 应用程序中使用第三方 Web 服务 对第 3 方 Web 服务的调用必须同步 但 ASP NET 显然是多线程的 并且可能会发出多个页面请求 从而导致对第 3 方 Web 服务的同时调用 对 Web 服务的调用封装在自
  • 并行化斐波那契序列生成器

    我正在学习并行化 在一项练习中 我得到了一些我应该提高性能的算法 其中之一是斐波那契数列生成器 array 0 0 array 1 1 for q 2 q lt MAX q array q array q 1 array q 2 我怀疑 这
  • 异常堆栈跟踪不显示抛出异常的位置

    通常 当我抛出异常 捕获它并打印出堆栈跟踪时 我会看到抛出异常的调用 导致该异常的调用 导致该异常的调用that 依此类推回到整个程序的根 现在它只向我显示异常所在的调用caught 而不是它所在的地方thrown 我不明白是什么改变导致了
  • 将 OpenCV Mat 转换为数组(可能是 NSArray)

    我的 C C 技能很生疏 OpenCV 的文档也相当晦涩难懂 有没有办法获得cv Mat data属性转换为数组 NSArray 我想将其序列化为 JSON 我知道我可以使用 FileStorage 实用程序转换为 YAML XML 但这不
  • 如何以编程方式播放 16 位 pcm 数组 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个包含 16 位 pcm 值的短 数组 我希望能够在不添加任何标题 也不将任何文件保存到内存的情况下播放它 我知道我可能需要一个提供
  • C++ 将联合强制转换为其成员类型之一

    以下对我来说似乎完全符合逻辑 但不是有效的 C 联合不能隐式转换为其成员类型之一 有人知道为什么不这样做的充分理由吗 union u int i char c function f int i int main u v v i 6 f v
  • 在 C++11 中移出 stdpriority_queue 的元素

    最小的工作示例 include
  • 如何使用递归查找数字中的最小元素 [C]

    好的 所以我正在准备我的 C 考试 当谈到递归时我有点卡住了我是大学一年级的学生 这对我来说似乎有点困难 练习要求在给定的数字中使用递归函数我需要找到最小的元素 例如 52873 是 2 程序需要打印 2 include
  • 为什么不能调用带有 auto& 参数的 const mutable lambda?

    include
  • 使用多线程进行矩阵乘法?

    我应该使用线程将两个矩阵相乘 有两件事 当我运行程序时 我不断得到 0 我还收到消息错误 对于每个错误 它在粗体行上显示 警告 从不兼容的指针类型传递 printMatrix 的参数1 我尝试打印输出 还要注意 第一个粗体块 这是我解决问题
  • doxygen c++:记录由“using”声明公开的私有继承成员

    作为一个例子 我有以下课程 class A public void methodOne class B private A public Brief description using A methodOne 我还没有找到强制 doxyge
  • ALTER TABLE ... ADD CONSTRAINT 失败时将事务回滚到保存点

    有没有办法在事务中添加检查约束and如果失败回滚到以前的保存点 而不是回滚整个事务 就我而言 当 ALTER TABLE ADD CONSTRAINT 命令失败时 事务无法回滚到保存点 尝试这样做会引发 InvalidOperationEx
  • C# 中的 C/C++ 代码编译器

    在 C 中 我可以使用下面的代码编译 VB 和 C 代码 但无法编译 C C 代码 有什么办法可以做到这一点吗 C 编译器 public void Compile string ToCompile string Result null st
  • 使用 xslt 将 xml 转换为 xsl-fo 时动态创建超链接?

    我想使用 xsl 文件在 PDF 报告中创建标题 如果源文件包含超链接 则应将其呈现为超链接 否则呈现为纯文本 例如 我的 xml 如下所示 a href http google com target blank This is the h
  • 浮点字节序?

    我正在为实时海上模拟器编写客户端和服务器 并且由于我必须通过套接字发送大量数据 因此我使用二进制数据来最大化可以发送的数据量 我已经了解整数字节顺序以及如何使用htonl and ntohl为了规避字节顺序问题 但我的应用程序与几乎所有模拟
  • 这种尺寸对齐是如何工作的

    对于所提供的评论 我无法理解以下代码 这段代码的作用是什么 以及等效的代码是什么8 aligned segment size must be 4 aligned attr gt options ssize 3 Here ssize is o
  • 将 Swagger 与命名空间版本的 WebApi 结合使用

    我已经找到了如何使用基于名称空间的 WebAPI 版本这个班 https aspnet codeplex com SourceControl changeset view dd207952fa86 Samples WebApi Namesp
  • 如何在c linux中收听特定接口上的广播?

    我目前可以通过执行以下操作来收听我编写的简单广播服务器 仅广播 hello int fd socket PF INET SOCK DGRAM 0 struct sockaddr in addr memset addr 0 sizeof ad

随机推荐

  • 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