最近项目需要修改打印机名称

public static bool SetPrinterName(string OldName, string newName){IntPtr hPrinter;PrintAPI.structPrinterDefaults defaults = new PrintAPI.structPrinterDefaults();defaults.pDatatype = null;defaults.pDevMode = IntPtr.Zero;defaults.DesiredAccess = PrintAPI.PRINTER_ACCESS_ADMINISTER | PrintAPI.PRINTER_ACCESS_USE;if (PrintAPI.OpenPrinter(OldName, out hPrinter, ref defaults)){int cbNeeded = 0;bool bolRet = PrintAPI.GetPrinter(hPrinter, 2, IntPtr.Zero, 0, out cbNeeded);if (cbNeeded >= 0){IntPtr pAddr = Marshal.AllocHGlobal((int)cbNeeded);bolRet = PrintAPI.GetPrinter(hPrinter, 2, pAddr, cbNeeded, out cbNeeded);if (bolRet){PrintAPI.PRINTER_INFO_2 info6 = new PrintAPI.PRINTER_INFO_2();info6 = (PrintAPI.PRINTER_INFO_2)Marshal.PtrToStructure(pAddr, typeof(PrintAPI.PRINTER_INFO_2));info6.pPrinterName = newName;IntPtr pPrinter = Marshal.AllocHGlobal(Marshal.SizeOf(info6));Marshal.StructureToPtr(info6, pPrinter, false);bolRet = PrintAPI.SetPrinter(hPrinter, 2, pPrinter, 0);Marshal.FreeHGlobal(pPrinter);}Marshal.FreeHGlobal(pAddr);}PrintAPI.ClosePrinter(hPrinter);return bolRet;}return false;}

大概的代码逻辑就是这样,这边有一个重点

PrintAPI.structPrinterDefaults defaults = new PrintAPI.structPrinterDefaults();defaults.pDatatype = null;defaults.pDevMode = IntPtr.Zero;defaults.DesiredAccess = PrintAPI.PRINTER_ACCESS_ADMINISTER | PrintAPI.PRINTER_ACCESS_USE;

一定要加这个设置权限,不然执行不成功。

使用SetPrinter修改打印机名称相关推荐

  1. win10打印机服务器属性修改,大师教你win10如何修改打印机名称的完全处理办法...

    有网友说他的电脑总是爱出一些怪问题,这不就出现了win10如何修改打印机名称,新手处理关于win10如何修改打印机名称的问题不是特别容易,如果你现在找不到专业的人员来解决win10如何修改打印机名称这 ...

  2. 如何使用 SetPrinter 修改打印机设置

    SetPrinter 是新 API for Windows 95. Windows NT. Windows 2000 和 Windows XP,允许应用程序更改各种打印机属性. 但是,如本文中的代码所 ...

  3. day inset_按 SetPrinter API 修改打印机设置 - Application Developer | Microsoft Docs

    使用 SetPrinter 函数修改打印机设置 03/09/2020 本文内容 该 SetPrinter 函数允许应用程序更改各种打印机属性. 但是,如本文中的代码所示,一定数量的准备工作是正确调用所 ...

  4. .NET(C#) 查找打印机指定打印机名称打印代码(PrintDocument)

    本文主要介绍.NET(C#)调用打印机打印相关操作(PrintDocument)代码,以及管理打印机的状态以及查询修改打印机属性,获取已安装的打印机驱动名,连接打印机并发送指令方法. 原文地址:.NE ...

  5. 解决:操作无法完成(错误0x00000709)。再次检查打印机名称,并确保打印机已连接到...

    上午同时说,网络打印机打印不了,于是首先看一下打印服务器IP是不是给换了,结果没换. 接着尝试重新添加一下网络打印机,结果问题来了,连不上,提示: 操作无法完成(错误0x00000709).再次检查打 ...

  6. idea批量修改变量快捷键mac_使用Mac自带功能批量修改图片名称、类型和压缩图片大小...

    Mac电脑自带的聚焦搜索功能已经很强大,可以快速准确的搜索电脑内的文件,但是从网上下载的文件,特别是一些图片文件都是一串数字组成的文件名,很难记忆和搜索,我们可以使用Mac自带的『自动操作』功能给图片 ...

  7. 在leangoo里怎么添加和移动列表,怎么修改列表名称?

    添加列表两种方式: 点击看板内的添加列表按钮,添加列表 点击看板内空白位置,即可在当前位置插入一个空列表. 修改列表名称: 点击列表名即可快速修改名称: 浏览器访问官网:leangoo.com

  8. 批量修改文件名称(Python)

    本程序功能:批量修改文件名称 import os import redef replaceDirName(rootDir): # 修改rootDir路径下的文件夹名num = 0dirs = os.l ...

  9. 修改项目名称后,部署到tomcat问题

    1.问题描述: 修改项目名称后,部署到tomcat问题 解决方案: 项目->属性->myelcipse->web下,修改web context root就可! 2.去掉超链接默认的行 ...

最新文章

  1. 专家谈半导体产业前景 并购热还会继续
  2. VMware Workstation 与 Hyper-V 不兼容。请先从系统中移除 Hyper-V 角色
  3. MySQL调优系列基础篇
  4. [Python] L1-055 谁是赢家-PAT团体程序设计天梯赛GPLT
  5. DOM基础操作(三)
  6. Python12/10--前端之display/overflow使用/清浮动的方式
  7. c语言程序设计5pdf,C语言程序设计5.pdf
  8. VS2012 正式版BUG太多
  9. github协同工作流程(一)
  10. 部署在服务器上的行驶证识别api接口
  11. 计算机核心论文如何审稿,2021年,审稿快、好中的核心期刊有哪些?
  12. CNC:CNC计算机数控系统技术之数控仿真宏程序代码讲解、案例应用集合之详细攻略
  13. macOS 上都有哪些既免费、又实用的工具?| 新手问号
  14. 基于TensorRT 5.x的网络推理加速(python)
  15. 基于pytorch+python实现一个中文到英文的神经网络的翻译模型
  16. sqlloader导出数据指定分隔符_来一份数据库全家桶~
  17. 计算机常用端口号一览表,计算机常用端口一览表
  18. Educode--头歌 《软件工程》实验作业
  19. 蓝桥试题 算法训练 绘制地图 __Java
  20. 基于android的校园快递查询收取寄件app

热门文章

  1. 浅议企业对员工的压力管理
  2. 国外漂亮的手机网站模板
  3. 研究生第一篇SCI成功发表
  4. hdfs 删除文件不走回收站
  5. java 插件原理_javaweb项目插件实现机制
  6. 解读实用的机器人教育矩阵变革
  7. excel排序怎么让后面数据跟着动 excel排序为什么还是乱的
  8. [Swift]圆角处理
  9. webhub123整理 中文语音识别数据集​
  10. 水星(MERCURY)MW150RM迷你无线路由器Client模式设置