如何创建新端口并将其分配给打印机

2023-12-14

我们有一个虚拟打印机(由第三方提供)被分配给无效的本地打印机端口。打印机始终是本地的(我们不处理远程打印服务器或类似的东西)。我想创建一个新的本地端口(特定于我们的应用程序),然后将打印机配置为分配给该端口,而不是打印驱动程序安装程序选择的随机(通常是不正确的)端口。

我相信我需要使用XcvData and/or Xcv数据端口函数可以做到这一点,但我对如何做有点不知所措。

有人有关于如何进行的示例或指示吗?

我想我需要执行以下操作:

  1. 检查以确保端口名称尚不存在(我可能可以使用枚举端口为此,但我不确定这是最好的方法,因为我还必须创建端口)
  2. 创建端口名称(如果存在)
  3. 更改打印机配置以使用新端口

以及卸载:

  1. 删除端口

哇,看起来这个问题难倒了所有人......经过一番挖掘,以下是如何做到这一点:

DWORD CreatePort(LPWSTR portName)
{
      HANDLE hPrinter;
      PRINTER_DEFAULTS PrinterDefaults;
      memset(&PrinterDefaults, 0, sizeof(PrinterDefaults));

      PrinterDefaults.pDatatype = NULL;
      PrinterDefaults.pDevMode = NULL;
      PrinterDefaults.DesiredAccess = SERVER_ACCESS_ADMINISTER;

      DWORD needed;
      DWORD rslt;


      if (!OpenPrinter(",XcvMonitor Local Port", &hPrinter, &PrinterDefaults))
          return -1;

      DWORD xcvresult= 0;
      if (!XcvData(hPrinter, L"AddPort", (BYTE *)portName, (lstrlenW(portName) + 1)*2, NULL, 0, &needed, &xcvresult))
            rslt= GetLastError();

      if (!ClosePrinter(hPrinter))
          rslt= GetLastError();

      return rslt;
}

在给定打印机上设置端口相对简单 - OpenPrinter()、GetPrinter() 和 PRINTER_INFO_2、SetPrinter()、ClosePrinter()

Cheerio.

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

如何创建新端口并将其分配给打印机 的相关文章

  • 使用链表进行堆排序

    我想知道是否有人曾经使用链表进行堆排序 如果他们可以提供代码 我已经能够使用数组进行堆排序 但尝试在链表中进行排序似乎不切实际 而且在你知道的地方很痛苦 我必须为我正在做的项目实现链接列表 任何帮助将不胜感激 我也用C 答案是 你不想在链表
  • 是否可以使用 http url 作为 DirectShow .Net 中源过滤器的源位置?

    我正在使用 DirectShow Net 库创建一个过滤器图 该过滤器图通过使用 http 地址和 WM Asf Writer 来流式传输视频 然后 在网页上 我可以使用对象元素在 Windows Media Player 对象中呈现视频源
  • C# 中的 Stack<> 实现

    我最近一直在实现递归目录搜索实现 并且使用堆栈来跟踪路径元素 当我使用 string Join 连接路径元素时 我发现它们被颠倒了 当我调试该方法时 我查看了堆栈 发现堆栈内部数组中的元素本身是相反的 即最近 Push 的元素位于内部数组的
  • 在 Mono 中反序列化 JSON 数据

    使用 Monodroid 时 是否有一种简单的方法可以将简单的 JSON 字符串反序列化为 NET 对象 System Json 只提供序列化 不提供反序列化 我尝试过的各种第三方库都会导致 Mono Monodroid 出现问题 谢谢 f
  • 如何在 C# 中将 Json 转换为对象

    我想将 Json 转换为 C 中的对象 这里的 Json 是 值 e920ce0f e3f5 4c6f 8e3d d2fbc51990e4 如何使用 Object 问题看似愚蠢 但其实并不那么愚蠢 我没有简单的 Json 我有 IEnume
  • 使用 C# 和 ASP.NET 在电子邮件附件中发送 SQL 报告

    我正在尝试使用 ASP NET 和 C 从 sql reportserver 2008 作为电子邮件附件发送报告 到目前为止我学会了如何获取 PDF 格式的报告 http weblogs asp net srkirkland archive
  • 防止控制台应用程序中的内存工作集最小化?

    我想防止控制台应用程序中的内存工作集最小化 在Windows应用程序中 我可以这样做覆盖 SC MINIMIZE 消息 http support microsoft com kb 293215 en us fr 1 但是 如何在控制台应用程
  • Makefile 和 .Mak 文件 + CodeBlocks 和 VStudio

    我对整个 makefile 概念有点陌生 所以我对此有一些疑问 我正在 Linux 中使用 CodeBlocks 创建一个项目 我使用一个名为 cbp2mak 的工具从 CodeBlocks 项目创建一个 make 文件 如果有人知道更好的
  • 如何在 Javascript 中连接 C# ActiveX 事件处理程序

    我尝试使用几个代码片段将 ActiveX 对象与 Javascript 事件处理程序挂钩 我无法确定为什么事件处理程序没有被调用 带有项目的 Github 存储库 https github com JesseKPhillips Csharp
  • 如何防止 Blazor NavLink 组件的默认导航

    从 Blazor 3 1 Preview 2 开始 应该可以防止默认导航行为 https devblogs microsoft com aspnet asp net core updates in net core 3 1 preview
  • 在 azure blob 存储中就地创建 zip 文件

    我将文件存储在 Blob 存储帐户内的一个容器中 我需要在第二个容器中创建一个 zip 文件 其中包含第一个容器中的文件 我有一个使用辅助角色和 DotNetZip 工作的解决方案 但由于 zip 文件的大小最终可能达到 1GB 我担心在进
  • 让网络摄像头在 OpenCV 中工作

    我正在尝试让我的网络摄像头在 Windows 7 64 位中的 OpenCV 版本 2 2 中捕获视频 但是 我遇到了一些困难 OpenCV 附带的示例二进制文件都无法检测到我的网络摄像头 最近我发现这篇文章表明答案在于重新编译一个文件 o
  • MySQL 连接器 C++ 64 位在 Visual Studio 2012 中从源代码构建

    我正在尝试建立mySQL 连接器 C 从源头在视觉工作室2012为了64 bit建筑学 我知道这取决于一些boost头文件和C 连接器 跑步CMake生成一个项目文件 但该项目文件无法编译 因为有一大堆非常令人困惑的错误 这些错误可能与包含
  • .NET 和 Mono 之间的开发差异

    我正在研究 Mono 和 NET C 将来当项目开发时我们需要在 Linux 服务器上运行代码 此时我一直在研究 ASP NET MVC 和 Mono 我运行 Ubuntu 发行版 想要开发 Web 应用程序 其他一些开发人员使用 Wind
  • Xamarin Forms Binding - 访问父属性

    我无法访问页面的 ViewModel 属性以便将其绑定到 IsVisible 属性 如果我不设置 BindingContext 我只能绑定它 有没有办法可以在设置 BindingContext 的同时访问页面的 viewmodel root
  • C++ 指针引用混淆

    struct leaf int data leaf l leaf r struct leaf p void tree findparent int n int found leaf parent 这是 BST 的一段代码 我想问一下 为什么
  • 构建 C# MVC 5 站点时项目之间的处理器架构不匹配

    我收到的错误如下 2017 年 4 月 20 日构建 13 23 38 C Windows Microsoft NET Framework v4 0 30319 Microsoft Common targets 1605 5 警告 MSB3
  • 如何编写一个接受 int 或 float 的 C 函数?

    我想用 C 语言创建一个扩展 Python 的函数 该函数可以接受 float 或 int 类型的输入 所以基本上 我想要f 5 and f 5 5 成为可接受的输入 我认为我不能使用if PyArg ParseTuple args i v
  • 声明一个负长度的数组

    当创建负长度数组时 C 中会发生什么 例如 int n 35 int testArray n for int i 0 i lt 10 i testArray i i 1 这段代码将编译 并且启用 Wall 时不会出现警告 并且似乎您可以分配
  • 如何在 C# 中获取 CMD/控制台编码

    我需要指定正确的代码页来使用 zip 库打包文件 正如我所见 我需要指定控制台编码 在我的例子中为 866 C Users User gt mode Status for device CON Lines 300 Columns 130 K

随机推荐

  • 如何将异步/标准库 future 转换为 futures 0.1?

    我想使用async函数逐步解析入站流 但 actix web 需要impl Future
  • 触发dialog.close 后,Word 加载项停止工作。办公JS

    我一直在开发一个 Office365 应用程序 在该应用程序中我打开了一个对话框 并在进行某种活动后使用dialog close 关闭对话框 它工作得很好 但功能区按钮停止工作 下次它不会再显示相同的对话框 Office context u
  • php中如何显示上传后的图片?

    将图像上传到文件夹后 怎么显示图片 这是我的 upload php
  • 打字稿回调函数中的“this”范围

    我无法理解 这个 上下文在打字稿中是如何工作的 我无法访问方法中的类成员 下面是我的代码 class adopterDetailCtrl public adopter IAdopter public router any static in
  • Django Admin 看起来很奇怪

    这是 Django 3 的新安装 我得到了面板的管理员外观 我在浏览器控制台中没有错误 我已经做了 python3 manage py collectstatic 一条线索 为了能够在没有 apache 500 错误的情况下看到这个管理面板
  • 如果没有 @Provides 注释的方法,则无法提供 >

    我正在尝试创建一个像这样的视图模型模块example但我遇到了这个错误 错误 如果没有 Provides 注释的方法 则无法提供 java util Map javax inject Provider gt 我遵循了所有示例 这是我的代码
  • 在 Visual Basic.NET 中构造对象而不对其进行赋值

    我已经使用 VB net 好几年了 但总是遇到一些我不知道如何解决的小问题 好奇心终于战胜了我 所以我现在问 有没有一种方法可以创建一个对象而不分配它 例如 假设我有一个 Engine 类 我想实例化它并让它立即执行它需要执行的任何操作 如
  • Windows 上的 symfony2 assetics yui 压缩器(路径语法)

    我正在尝试让 assetics 与 yui 压缩器一起运行 如果正在运行 则使用 sass 目前 两者都不起作用 当从 config yml 和 twig 模板中删除所有过滤器时 它可以工作并且php app console assetic
  • C# 第二维数组到一维数组的引用

    我有一个可以接受一维数组的函数 double 作为参数 而我的源数据是一个二维数组 double 的 cnt 3d 点数量 就像这样 double points new double 3 cnt 但我真正想做的是将三个第二个暗淡数组中的每一
  • ASP.Net Core WebApi 中的非属性路由

    我需要构建项目 实现由供应商应用程序预定义的 REST API 将使用它 有大约数千个 REST 资源 其中一些操作由不同的 HTTP 动词 POST GET PUT DELETE 等 定义 因此 理想情况下 对于每个资源 我应该有一个像这
  • 是否可以将“选择”块中出现的元素限制为最大?

    我需要解决以下问题 伪算法 你有四个元素 elm1 elm2 elm3 elm4 elm1 出现 0 2 次 elm2 出现 0 1 次 elm3 出现 0 n 次 elm4 出现 0 n 次 它们可以以任何方式订购 但仅限于给定的数量 伪
  • 如何使用 jQuery 和 PHP 在单独的行上显示 JSON 响应

    我正在使用 AJAX 提交表单 并希望在页面上显示信息摘要 以便用户可以在提交之前确认信息 我无法将结果显示在多行上 关于最好的方法有什么建议吗 这是 PHP return message First Entry POST Name1 Se
  • c++ win32:如何设置窗口的背景颜色?

    我可以在注册课程时设置背景颜色 例如 wincl hbrBackground CreateSolidBrush RGB 202 238 255 RegisterClassEx wincl 但是我该如何对使用 CreateWindow 函数创
  • 在 Go 中将时区解析为 Location 结构

    给定一个时区 例如 EDT 或 CEST 有没有办法获得time Location参考使用它func t Time In loc Location Time 可以初始化例如位置 中欧夏令时time LoadLocation Europe B
  • 根据 WooCommerce 3+ 中的用户角色添加自定义我的帐户菜单项

    我正在使用 WordPress 和 WooCommerce 并且我已关注这篇文章https rudrastyh com woocommerce my account menu html在 WooCommerce 我的帐户菜单中添加新菜单项
  • 使用 CSS 定位 DIV 的第一个元素

    我在一个表格内有一个所见即所得编辑器 该编辑器放置在 div 内 因此 div class mydiv li table My WYSIWYG table li 在我的所见即所得中 有更多的表 但是我只想定位第一个表 我知道我可以为该表分配
  • textView setText() NullPointerException

    我有一个几乎完全香草的应用程序 我想做的就是更改 textView 的文本 但它给了我一个 NullPointerException 我没有 XML 配置 没有添加方法 没有什么特别的 我检查了我的类 它指向正确的 XML 并且 XML 中
  • mysql:如何 INNER JOIN 一个表,但将连接限制为 1 个具有最高投票或计数的结果?

    我有 2 张桌子 一个是项目 另一个是对这些项目的投票 Items table has item id name post date Votes table has votes id item id answer total yes tot
  • 从 Google 表格填充 HTML 表单

    我对这一切还很陌生 但我希望直接使用 Google 电子表格中的名称填充 Apps 脚本 Web 应用程序 HTML 下拉表单条目 到目前为止 我已经能够从电子表格的 A 列返回一组名称 此外 JS 的 填充表单 部分成功填充了 HTML
  • 如何创建新端口并将其分配给打印机

    我们有一个虚拟打印机 由第三方提供 被分配给无效的本地打印机端口 打印机始终是本地的 我们不处理远程打印服务器或类似的东西 我想创建一个新的本地端口 特定于我们的应用程序 然后将打印机配置为分配给该端口 而不是打印驱动程序安装程序选择的随机