问题标签 [print-spooler-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 使用 XcvData 获取 IP 地址
我需要获取打印机的 ip,但没有取得多大成功。已经尝试过各种方式。目前我的代码是这样的:
当他试图调用 XcvData 函数时,她没有输入“IF”。我的对象“wAddress”仍然是空的。因为我没有得到?
OBS:此代码基于 msdn 文档: http: //msdn.microsoft.com/en-us/library/windows/hardware/ff562761 (v=vs.85).aspx
谢谢!
c# - PrintServerException - “...名称无效”,即使我可以从 Windows 访问路径
类似于以下的一行抛出了上述异常:
当我在 Windows 上使用“运行...”时,上面的地址确实有效,并将我带到了打印作业列表,那么为什么代码行不起作用?
c++ - FindNextPrinterChangeNotification 为 ppPrinterNotifyInfo 返回 NULL
如果我想寻求帮助,我遇到了问题:
我的任务是使用带有“打印”动词的 ShellExecuteEx 打印一些不同类型的文件,并且需要保证所有文件的打印顺序。因此,我使用 FindFirstPrinterChangeNotification 和 FindNextPrinterChangeNotification 来监视事件 PRINTER_CHANGE_ADD_JOB 和 PRINTER_CHANGE_DELETE_JOB 在后台使用两个不同的线程,我在调用 ShellExecuteEx 之前开始,因为我对将打印文件等的应用程序一无所知。我唯一知道的是我是唯一一个打印和我打印的文件。我的解决方案似乎运行良好,我的程序成功识别了我的文件的事件 PRINTER_CHANGE_ADD_JOB,我什至通过指定 JOB_NOTIFY_FIELD_DOCUMENT 检查作为附加信息提供给我的内容来验证此事件是否为我的文件发出。
现在的问题是事件 PRINTER_CHANGE_DELETE_JOB,我没有得到关于打印作业的任何附加信息,尽管我的逻辑对于这两个事件是完全相同的:我编写了一个通用线程函数,它只是通过事件执行它是用来。我的线程正在识别 PRINTER_CHANGE_DELETE_JOB 事件,但是在每次调用 FindNextPrinterChangeNotification 时,只要发生此事件,我就不会在 ppPrinterNotifyInfo 中获得任何附加数据。不过,这适用于启动事件,我使用我的日志和调试器进行了验证。但是对于 PRINTER_CHANGE_DELETE_JOB,我唯一得到的是 NULL。
我已经在网上搜索了一些类似的问题,但大部分时间与 VB 相关或根本没有答案。我正在使用 C++ 项目,并且由于我的代码适用于 ADD_JOB 事件,因此我认为我做的事情并没有完全错误。但即使 MSDN 也没有提到这种行为,我真的很想确保 DELETE_JOB 事件是我的文档的事件,如果没有任何有关打印作业的信息,我就无法做到这一点。在我收到 DELETE_JOB 事件后,我的代码甚至无法识别其他事件,这没关系,因为打印作业是在之后完成的。
以下是我认为的相关通知代码:
如果有人能就我为什么没有得到任何有关打印作业的数据提供一些提示,我将不胜感激。谢谢!
https://forums.embarcadero.com/thread.jspa?threadID=86657&stqc=true
.net - System.Printing 跳过一些作业状态?
我正在向打印机发送打印作业,并尝试跟踪它们的状态,以便将其反映在我自己的队列中。
似乎打印作业从未经历过“已打印”、“已完成”状态。
我做了一个小测试程序,看看我是否以错误的方式使用了 .net 对象,但这仍然发生。我运行我的测试程序来查询一个新的打印作业,一旦有一个打印作业,我就会对其进行大量轮询并刷新每次以查看它的状态并确保我不会错过任何东西。
即使打印了文档,我得到的结果是:
我如何知道文档何时处于“已完成”状态?
c++ - 如何以编程方式禁用后台打印程序中的“脱机使用打印机”菜单选项?
在任何已安装打印机的打印后台处理程序对话框中,都有一个菜单选项可用于脱机使用打印机。启用此选项意味着所有文档都将排队,直到所述打印机联机。
我正在谈论的选项:
对于与打印机交互的应用程序,我不希望这样做。这是因为我需要在打印机未连接时告诉用户(这是一项要求)。我正在使用GetPrinter
带有PRINTER_INFO_2
结构的函数来检查PRINTER_ATTRIBUTE_WORK_OFFLINE
属性。
当我手动禁用上述选项时,我的GetPrinter
方法告诉我打印机在未连接时处于脱机状态,而在连接时则处于联机状态。当我启用该选项时,该GetPrinter
方法总是告诉我打印机在线(我理解)。
如何以编程方式禁用“脱机使用打印机”选项?
c# - 从 Print Spooler API 获取用户用于打印作业的域名
在给定打印作业 ID 的情况下,如何获取进行打印的用户的域名?
我可以从例如通过 GetJob 检索到的 JOB_INFO_2 中获取用户名,但是 JOB_INFO_# 结构中没有一个包含用户的域名。
我可以使用 获取打印服务器的域IPGlobalProperties.GetIPGlobalProperties().DomainName
,但这可能与用户的域不同,因此它不是一个可靠的解决方案。
javascript - 使用 js-ctypes 进行 Win32 打印失败并显示 ERROR_INVALID_HANDLE
我正在将二进制组件转换为 js-ctypes 并且 StartPagePrinter 给了我 ERROR_INVALID_HANDLE。我正在使用标准的 Windows 技术进行打印。(搜索“MSDN WritePrinter”以查看基本步骤。)我想我要么使用了错误的类型,要么没有进行某种类型的转换。
我没有将 ctypes.uintptr_t 用于 jobHandle,而是尝试了 ctypes.intptr_t、ctypes.voidptr_t 和 ctypes.int32_t。它们都因相同的错误而失败。
我必须承认这是我 30 年职业生涯中完成的第一个 Win32 编程,所以请多多包涵。
这是代码片段:
c# - 检索实际的打印机队列
打印机是网络打印机。实际上是使用以太网连接的普通打印机。它以某种方式本身充当打印机服务器。发送到此打印机的所有文档都会立即从本地队列中消失。我需要一种(有点)可靠的方法来确认打印成功。现在我不能假设在后台处理程序中的作业消失后打印成功,因为即使该作业似乎已经completed
在后台处理程序队列中完成(具有状态),打印机仍在预热!一点都不可靠……这个型号尤其是爱普生 LP-9400,但我计划针对“配置”而不是特定型号。
这完全可以使用 WMI 实现吗?还是 WMI 层缺少有关实际状态的更新信息?(现在我正在使用 WMI 查询状态)
c# - 是否可以为打印机创建 Windows 服务?
是否可以创建一个 Windows 服务来了解何时发出打印请求并了解状态(待处理、工作、已完成等)例如。假设有一个内部网。如果节点计算机尝试使用连接到主机的打印机打印文档,我可以构建一个应用程序来了解何时以及哪台计算机使用 C# 发出请求。谢谢 !
csv - 在将实验室测量值发送到打印机时捕获它们
我有一台 1980 年代后期的实验室仪器,它有一台打印机作为其唯一可存储的数据输出(它可以实时在屏幕上为您提供读数,但不会将其保存到内存中,因为它没有,您可以查看最后一个测量数据点)。打印机是 Epson FX1050,但该仪器还可以选择使用“HP”打印机(只是把它放在那里,因为我知道两种情况下的标准不同)。仪器本身执行测量和计算以获得成为输出的结果。仪器执行任务所需的时间因样品而异。
我继续购买了 labsoft/Perkin ELmer 的数据收集软件“Collect 6.1”,看看它是否能解决我的问题。我对数据解析有一点了解,但是技术对于单个测量会产生的数据量(超过 100 行)有点不知所措,只有几个特定的地方会重复相同的文本,而我没有任何运气好让它以我想要的方式解析数据,我认为即使我将超时设置得很高,它也会超时,平均测量时间约为 3 分钟。我可以让它查看正在发送的内容,但它对它没有多大作用,我只能在测试模式下查看它,它会保存为文本。
在经历了许多令人沮丧的日子后,我正试图改变我的方法。我有一篇 1995 年的文章,他们将同一台仪器连接到带有通信软件(下载 ASCII 文件的 PROCOMM)的外部计算机,然后将其转换为 Lotus 123 / Excel 进行数据处理。如果我能做类似的事情,我会在“猪天堂”,但我认为打印机文件可能更容易使用。该仪器具有设置硬件握手、CTS 输出、RTS 输入等的选项......并且从我使用 Collect 软件的失败尝试中,我知道我正在使用正确的电缆将数据从仪器获取到计算机,但现在我如果打印机输出数据有一个“简单”的基于 Windows 的导入器,我正在考虑切换电缆并尝试将打印机输出输入计算机。
“打印机输出”的优点是只发送带有结果的关键数字,使我免于对单个测量进行排序。我已经阅读了其他“拦截打印机数据”的问题,但我没有发现它们 100% 适用。
作为警告,我对计算机软件、应用程序或宏并不是特别有天赋,只是基本的 windows 类型的东西和一些比一般 Excel 技能更好的东西。我偶然发现了这个论坛,因为还有其他打印机数据导出问题,我变得充满希望。提前致谢。