我正在寻找创建一个将数据传递给我的.NET应用程序的虚拟打印机.我想创建一个安装程序,安装打印机和.NET应用程序.我们真的很高兴能够用C#编写它,但我觉得这需要编写一个打印机驱动程序是非托管代码.有谁知道一个相当干净的教程或如何做到这一点的例子?
访问http://www.printerplusplus.com.它是开源的.NET虚拟打印机.它为您提供了一个安装程序和一个.NET类,用于编写代码来处理"打印机数据".
您正在使用Github项目提出的问题:Microsoft/Windows-driver-samples/print/XPSDrvSmpl
https://github.com/Microsoft/Windows-driver-samples/tree/master/print/XPSDrvSmpl
安装人员:http://wixtoolset.org/
应用:收听内部端口
流程:从单个安装程序安装打印机和应用程序.用户使用您的驱动程序打印内容,同时应用程序侦听内部端口.发送数据时,应用程序会将其选中.这适用于XPS,可以转换为PDF,但无论您打印什么,流程都是类似的.如果您还需要其他任何东西,请查看GitHub上的Microsoft/Windows-driver-samples/print /或其他特定于您需求的来源.
更新:
关于如何让驱动程序在这里工作的很多问题都是一个简单的例子:
如果您尚未安装Windows驱动程序工具包(WDK),请首先下载.安装时选择在最后一步添加Visual Studio的扩展名.在Visual Studio 2017安装中,您需要Desktop development with C++
拥有正确的SDK.如果你没有它,请看下面的anser如何添加它.
如何向Visual Studio 2017添加功能?
https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit
然后下载.zip
Windows-driver-samples master 的文件:
https://github.com/Microsoft/Windows-driver-samples/archive/master.zip
导航到该文件夹
并XPSDrvSmpl.sln
在Visual Studio中打开.
然后按照GofHub上的微软自己的指南.正如您所看到的,它适用于Visual Studio 2015,但我认为它在2017年是相同的(尚未测试):
要使用Windows驱动程序工具包(WDK)10和Visual Studio 2015构建驱动程序解决方案,请执行以下步骤.
在Visual Studio 2015中打开解决方案文件.
将所有非二进制文件(通常位于示例的\ install目录中)添加到Package项目中:a.在Solution Explorer中,右键单击Driver Files b.选择Add,然后单击Existing Item c.导航到下载示例的位置,然后选择安装目录中的所有文件,或等效的非二进制文件集,如INF,INI,GPD,PPD文件等.单击添加
配置要添加到驱动程序包中的这些文件:在Solution Explorer中,右键单击解决方案,然后选择Add> New Project.在Visual C++/Windows驱动程序/包下选择驱动程序安装包.湾 在Solution Explorer中,右键单击Package项目并选择Properties.C.在左窗格中,单击"配置属性">"驱动程序安装">"包文件".d.在右侧窗格中,使用省略号按钮(...)浏览到需要添加到驱动程序包的文件集.应添加在步骤2-c中添加的除INF文件之外的所有数据文件.此配置是按体系结构的,因此必须对将要构建的每个体系结构重复此配置.即 单击确定.
打开INF文件并对其进行编辑以匹配构建的输出.一个.打开INF文件.湾 在Version部分中,添加对目录文件的引用,如下所示:CatalogFile = XpsDrvSmpl.cat.C.在SourceDisksFiles部分中,将要构建的DLL文件的位置更改为= 1.这表示此驱动程序中没有特定于体系结构的目录.如果同时发送多个体系结构,则需要手动整理驱动程序INF.
此时,Visual Studio 2015将能够构建驱动程序包并将文件输出到磁盘.要配置驱动程序签名和部署,请参阅开发,测试和部署驱动程序.
https://github.com/Microsoft/Windows-driver-samples/tree/master/print/XPSDrvSmpl#build-the-sample
我想你将不得不做很多 WinAPI包装.开始研究Windows驱动程序开发工具包,找到您必须要做的事情.
我还发现了这个用于.NET的商业打印机驱动程序资源工具包 ......
您可以简单地让您的应用程序像LPD类型的打印机或监视器端口9100一样暴露自己.然后您可以安装任何您喜欢的打印驱动程序,并将其指向您的应用程序.