Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从usb打印机记录原始数据并使用后台打印程序_C#_Printing_Usb_Printers_Print Spooler Api - Fatal编程技术网

C# 从usb打印机记录原始数据并使用后台打印程序

C# 从usb打印机记录原始数据并使用后台打印程序,c#,printing,usb,printers,print-spooler-api,C#,Printing,Usb,Printers,Print Spooler Api,我知道类似的问题以前也被问过,比如说在其他一些地方。 但是我想问一些关于基本概念的问题 所以,我被分配了一个项目,我必须做一个“usb记录器”。该项目的主要功能是在记录器软件上捕获从PC传输到Usb打印机的数据,以便将每个打印输出的原始数据保存到文件中进行记录和分析 我被告知我可以使用第三方工具,如,但我建议我们为什么不直接从后台打印程序获取数据。据我所知,后台打印程序维护要打印的数据队列 在我开始这个项目之前,我想问几个基本问题 1) 此场景中的原始数据是什么 2) 我是否可以通过直接从后台处

我知道类似的问题以前也被问过,比如说在其他一些地方。 但是我想问一些关于基本概念的问题

所以,我被分配了一个项目,我必须做一个“usb记录器”。该项目的主要功能是在记录器软件上捕获从PC传输到Usb打印机的数据,以便将每个打印输出的原始数据保存到文件中进行记录和分析

我被告知我可以使用第三方工具,如,但我建议我们为什么不直接从后台打印程序获取数据。据我所知,后台打印程序维护要打印的数据队列

在我开始这个项目之前,我想问几个基本问题

1) 此场景中的原始数据是什么

2) 我是否可以通过直接从后台处理程序获取来实现这一点,或者是否有其他方法

3) 哪一个需要更多的pc资源与usb端口或后台处理程序通信

我只需要完全了解这个领域。(我将使用C#开发此项目)


谢谢

如果您需要以原始形式捕获整个输出,最简单的方法就是使用端口监视器。端口监视器位于假脱机程序和物理输出设备之间,并将原始数据写入该设备,因此它是捕获此类数据的自然场所

您需要做的是安装Windows WDK并查看示例端口监视器。您应该能够使用它,只需很少的修改。主要是,除了将数据写入打印机之外,还需要添加代码将数据写入某个文件中。您还需要更改处理注册表的所有代码,因为示例假定它是默认端口监视器,并写入为Windows保留的注册表项


请注意,版本4打印驱动程序(即Win8)不支持自定义端口监视器。但是,Win8仍然支持v3打印驱动程序,该驱动程序应该覆盖当前的所有打印机。

您可以在后台打印程序访问USB端口之前捕获这些数据,但如何继续的问题取决于您计划如何处理这些数据。如果您从USB捕获它,您将获得打印机想要理解的原始数据。它可以是Postscript、PCL、原始位图,也可以是完全不同的、打印机专有的内容。这几乎肯定是很难做到的。捕获spool文件数据可能更简单,但您想对数据做什么?我只想维护通过usb打印机打印的数据日志,就是这样。我的方法正确吗?当你们说打印的数据日志时,你们是什么意思?以原始形式捕获到打印机的整个实际输出?或者仅仅是摘要信息,如谁打印、何时、何地等?以原始形式捕获整个输出。