在.NET中编写虚拟打印机[关闭]

2024-01-07

我希望创建一个虚拟打印机,将数据传递到我的 .NET 应用程序。然后我想创建一个安装程序来安装打印机和 .NET 应用程序。如果能够用 C# 编写所有内容,那就太好了,但我有一种感觉,这将需要编写非托管代码的打印机驱动程序。有谁知道如何执行此操作的相当干净的教程或示例?


使用 Github 项目完全按照您的要求进行操作:Microsoft/Windows-driver-samples/print/XPSDrvSmpl

https://github.com/Microsoft/Windows-driver-samples/tree/master/print/XPSDrvSmpl https://github.com/Microsoft/Windows-driver-samples/tree/master/print/XPSDrvSmpl

安装人员:http://wixtoolset.org/ http://wixtoolset.org/

应用:监听内部端口

流程:从单个安装程序安装打印机和应用程序。当应用程序监听内部端口时,用户使用您的驱动程序打印一些内容。当数据发送时,应用程序会接收它。这是针对 XPS 的,可以转换为 PDF,但无论打印什么内容,流程都是相似的。如果您需要任何其他内容,请查看 GitHub 上的 Microsoft/Windows-driver-samples/print/ 或特定于您的需求的其他来源。

Update:

关于如何让驱动程序工作有很多问题,这里是一个简单的例子:

如果尚未安装,请首先下载 Windows 驱动程序工具包 (WDK)。安装时选择在最后一步添加 Visual Studio 扩展。在您的 Visual Studio 2017 安装中,您需要有Desktop development with C++拥有正确的 SDK。如果您没有它,请参阅下面的答案,了解如何添加它。

如何向 Visual Studio 2017 添加功能? https://stackoverflow.com/questions/43127718/how-do-i-add-features-to-visual-studio-2017/47329536#47329536

https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit

然后下载.zipWindows-driver-samples master 文件:

https://github.com/Microsoft/Windows-driver-samples/archive/master.zip https://github.com/Microsoft/Windows-driver-samples/archive/master.zip

导航至文件夹<UnzipFolder>\print\XPSDrvSmpl并打开XPSDrvSmpl.sln在视觉工作室中。

然后按照 GitHub 上 Microsoft 自己的指南进行操作。正如您所看到的,它适用于 Visual Studio 2015,但我认为它适用于 2017 年(尚未测试):

要使用 Windows 驱动程序工具包 (WDK) 10 和 Visual Studio 2015 构建驱动程序解决方案,请执行以下步骤。

  1. 在 Visual Studio 2015 中打开解决方案文件。
  2. 添加所有非二进制文件(通常位于 \install 目录中 示例)到 Package 项目:在解决方案资源管理器中, 右键单击驱动程序文件 b.选择添加,然后单击现有项目 c. 导航到您下载示例的位置,然后 选择安装目录中的所有文件或等效集 非二进制文件,例如 INF、INI、GPD、PPD 文件等。 单击添加
  3. 配置这些文件以添加到驱动程序包中:在里面 解决方案资源管理器,右键单击解决方案并选择“添加”>“新建” 项目。 Visual C++/Windows下选择驱动安装包 驱动程序/包。 b.在解决方案资源管理器中,右键单击包 项目并选择属性。 C。在左侧窗格中,单击 配置属性 > 驱动程序安装 > 包文件。 d.在里面 在右窗格中,使用省略号按钮 (...) 浏览到一组 需要添加到驱动包中的文件。所有数据 您在步骤 2-c 中添加的文件(INF 文件除外)应为 添加。此配置是针对每个架构的,因此此配置 必须对将要构建的每个架构重复此操作。 e.点击 好的。
  4. 打开 INF 文件并编辑它以匹配构建的输出。 A。打开 INF 文件。 b.在版本部分中,添加对目录的引用 像这样的文件: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 https://github.com/Microsoft/Windows-driver-samples/tree/master/print/XPSDrvSmpl#build-the-sample

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

在.NET中编写虚拟打印机[关闭] 的相关文章

  • Winforms Chart - 在折线图上绘制允许的区域

    如何在图表上绘制灰色区域 信号的允许范围 我使用 Winforms 和标准 MicrosoftSystem Windows Forms DataVisualization类 它应该是自定义范围 这意味着起始 Y 点不能仅为零 我在运行时在线
  • 将注册表中的版本号转换为System.Version?

    我正在从注册表中检索版本号 如下所示 rKey GetValue Version 现在我想将其转换为System Version object 我该怎么做呢 假设这是一个字符串 string versionText string rKey
  • 如何使用静态方法最小起订量静态类(UnitOfWork 情况)?

    我有这些课程 public static class UnitOfWorkSS public static IUnitOfWork Begin return IoC Resolve
  • .NET Web 服务 (asmx) 超时问题

    我正在连接到供应商提供的 Web ASMX 服务并通过线路发送一组数据 当您向项目添加服务引用时 我的第一次尝试遇到了 Visual Studio 默认在 app config 文件中引发的 1 分钟超时 我把它增加到 10 分钟 又是一次
  • 如何使用 SqlDataReader 返回和使用 IAsyncEnumerable

    请看下面两种方法 第一个返回一个IAsyncEnumerable 第二个试图消耗它 using System Collections Generic using System Data using System Data SqlClient
  • 您在 C# 或 .NET 中见过的最奇怪的极端情况是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 自定义编译器警告

    在 Net 中使用 ObsoleteAtribute 时 它 会向您发出编译器警告 告诉您该对象 方法 属性已过时 应使用其他内容 我目前正在从事一个需要大量重构前员工代码的项目 我想编写一个自定义属性 可用于标记方法或属性 这些方法或属性
  • 如何异步使用 HttpWebRequest (.NET)?

    如何异步使用 HttpWebRequest NET C Use HttpWebRequest BeginGetResponse http msdn microsoft com en us library system net httpweb
  • 如何判断谁登录了 SQL Server

    我正在设计一个应用程序 我正在寻找最好的方法来告诉谁当前登录到 SQL Server 我将使用 SSMS 内置的活动监视器 它显示访问服务器的所有进程的列表 非常酷 但是 如果在我的 NET 代码中 每次访问数据库时它都使用单独的连接 那么
  • 使用 Reporting Services 将组保持在一页上

    我使用 Reporting Services 创建了一个报表作为 C 应用程序的一部分 但我找不到一些我习惯在其他环境中看到的功能 我相信 MS Access 和 Crystal 报表都有一个名为 保持在一起 的选项 这样您就可以将特定的数
  • 如何从 .Net 中的许多 HTML 文件中读取 xpath 值?

    我的一个文件夹中有大约 5000 个 html 文件 我需要循环遍历它们 打开 使用 xpath 获取 10 个值 关闭并存储在 SQL Server 数据库中 使用 Net 读取 xpath 值的最简单方法是什么 xpath 应该相当稳定
  • C#:将字符串编组为 utf8 char* [重复]

    这个问题在这里已经有答案了 背景 我正在尝试基于修改后的 libspotify net 编写一个高级 libspotify 包装器 http libspotifydotnet codeplex com http libspotifydotn
  • WebView (OSX) 未在打印面板预览中呈现

    我的应用程序创建并打印 WebView 输出页面正在正确组装和打印 但我没有在打印面板中预览页面 NSRect printViewFrame printViewFrame size width paperSize width marginL
  • 使用模型优先方法时如何播种数据?

    所以我正在学习MVC3和EF4 我尝试了代码优先方法 但它对我来说太混乱了 我可以毫无问题地创建类 但最困难的部分是处理外键和彼此之间的关系 但我首先选择了模型 这样我就可以直观地设计它并查看关系在哪里 创建模型后 它会为我创建一个 SQL
  • Control.Invoke 在隐藏的 ShowDialog 中“卡住”

    我有解决这个问题的方法 但这不是我第一次被咬 所以我试图确切地了解发生了什么 从我的申请中 我ShowDialog表单 表单上有一个按钮 单击该按钮时会调用另一个 非 GUI 线程上的代码 非 GUI 线程发回状态 Pushed then
  • DISM.exe 返回代码?

    我有一个程序调用 dism exe 程序 它在后台运行一些命令 现在 我只检查返回代码 0 或其他任何内容 以显示进程失败或成功 我可以用什么来交叉检查返回代码以获得准确的返回错误 DISM 参考了哪些回报 评论中提供的链接DISMAPI
  • 使用事件处理程序与覆盖事件触发方法

    我正在创建 Button 的子类 并希望向其某些事件 例如 OnClick 添加自定义功能 哪种方式更理想 我是否重写 OnClick protected override void OnClick EventArgs e base OnC
  • System.Globalization.CultureInfo 不包含 Name 的定义

    我对 System Globalization CultureInfo 类和 System Globalization 命名空间有这个特殊问题 我从具有 CultureInfo 属性的 API 调用返回一个对象 语言 我能够成功地将其在客户
  • 文件/文件夹结构的递归搜索

    我正在尝试为返回文件和文件夹列表的 Web 服务构建递归搜索功能 我创建了这两个方法 因此它们充当递归搜索 它首先获取顶级内容 然后将任何文件添加到 fileList 并将任何子文件夹添加到 subFoldersList 我们传入访问级别
  • 如何在 Azure 中调试测试发送?

    I am trying to setup a successfull push notifications between my Net backend and ios client in azure I followed this htt

随机推荐

  • 重命名二维数组每行中的键

    在如下所示的数组中 如何将 fee id 重命名为 id 输入数组 fee id gt 15 fee amount gt 308 5 year gt 2009 fee id gt 14 fee amount gt 308 5 year gt
  • 通过 Spring 在并行流中使用 JPA 对象

    我正在使用 JPA 开发 spring boot 应用程序 在代码中 我发现一个非常可疑的部分 它执行类似的操作 简化的示例 代码否则包含很多混乱 entityRepository findAll parallel The findAll
  • 从数组中删除 stdClass 对象

    我有一个如下所示的数组 数组 1 我需要从中删除 stdClass 如下面的数组所示 2 目前我正在使用 foreach 循环来执行此操作 是否有更好的方法可以在不循环的情况下执行此操作 阵列1号 array 3 0 gt object s
  • 语法“while IFS= read line”记录在哪里?

    为什么我看到的每个例子都有while IFS read line并不是while IFS read line 我以为name value command可能会设置一个局部变量 但是sentence hello echo sentence不起
  • 嗅探并显示 UTF-8 格式的 TCP 数据包

    我正在尝试使用 tcpdump 来显示在我的网络上流动的 tcp 数据包的内容 我有类似的东西 tcpdump i wlan0 l A A 选项将内容显示为 ASCII 文本 但我的文本似乎是 UTF 8 有没有办法使用 tcpdump 正
  • 有没有更简单的方法在Matlab中构造Mandelbrot集?

    下面显示的代码用于绘制曼德尔布罗特集 http en wikipedia org wiki Mandelbrot set 我认为我的代码对于构造有点冗余Matrix M In Python我知道有一种干净的方法可以做到这一点 M mande
  • 日期时间向上和向下舍入

    我一直在寻找合适的舍入机制 但我发现似乎没有什么正是我所需要的 我需要分别向上舍入和向下舍入 并且还需要在已经四舍五入的情况下考虑情况 我需要进行以下舍入 5 00 gt RoundDown gt 5 00 5 04 gt RoundDow
  • 使用 powerlaw 包对截止分布进行幂律拟合

    我目前正在尝试找到一种方法来计算 MLE 截止分布的幂律拟合 分布如下 正如您所看到的 我能够分别拟合整个分布 幂律拟合 和下限 exp fit 我没能弄清楚的是如何拟合分布的上限 例如 8 有什么办法可以做到这一点poweRlaw包还是任
  • 如何使用 Docker API Python 客户端构建镜像?

    我刚刚启动了 Docker Api 并探索了各个部分 但是我一直坚持使用 python 客户端使用 docker api 构建图像 实际上我无法理解如何为 docker 设置各种所需的参数客户端 images build 方法 请帮帮我 提
  • R:rvest - 不是正确的 UTF-8,表明编码?

    我正在尝试 Hadley Wickham 的 新 Rvest 套餐 我过去用过它 所以我希望一切都会顺利进行 但是 我一直看到这个错误 gt TV Audio Video Marca lt read html page source 1 e
  • 在Python中高效地搜索字符串列表中的字符串列表

    我有一个字符串列表和一个字符串列表 例如 L1 cat dog apple orange green red L2 cat red 如果 L1 i 包含 L2 中的任何项目 我需要放置这些对 用于在图中创建边 就像 在我的例子中 我需要这些
  • Hadoop 中的作业和任务调度

    当我阅读延迟公平调度时 我对 Hadoop 中的术语 作业调度 和 任务调度 有点困惑在这张幻灯片中 https people csail mit edu matei talks 2010 eurosys delaysched pdf 如果
  • JavaScript 内部原理:事件循环以什么间隔运行?

    这是一个关于 JavaScript 内部结构的问题 假设我有 10 个异步任务 全部需要 x 秒才能运行 在等待响应时 脚本处于空闲状态 JavaScript 引擎在后台询问 任务队列中是否有任何内容 据我了解 这是一个循环 因此 事件循环
  • 程序员应该使用STL还是自己编写代码? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 合并表单和字段集不起作用?

    I ve a
  • 如何获得带有“下一步”、“上一步”和“完成”按钮的键盘?

    我想要一个上面有 下一步 上一步 和 完成 按钮的键盘 我在很多应用程序中都看到过这一点 尤其是需要填写表格的地方 我想实现类似于上面键盘的东西 我怎样才能得到它 你会找到答案这另一篇文章 https stackoverflow com q
  • 如何从nodejs中的phantomjs stdout读取图像来为其提供服务?

    我可能遗漏了一些细节 因为光栅化脚本独立工作得很好 但到目前为止我还没有成功地从 NodeJS 读取它的输出 这是 NodeJS 部分 var http require http var qs require querystring var
  • Django 形成动态让作者作为模型表单中的登录用户

    我正在尝试制作一些表单 允许用户添加一些对象 删除它们或编辑 但我一直坚持模型作者之类的内容 假设我们得到了带有场的模型镜头 author models ForeignKey settings AUTH USER MODEL on dele
  • 如何最小起订量索引属性

    我正在尝试模拟对索引属性的调用 IE 我想最小起订量以下 object result myDictionaryCollection SomeKeyValue 还有设置器值 myDictionaryCollection SomeKeyValu
  • 在.NET中编写虚拟打印机[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我希望创建一个虚拟打印机 将数据传递到我的 NET 应用程序 然后我想创建一个安装程序来安装打印机和