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

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. 在tomcat上部署项目需要打成jar_Spring Boot Web 项目教程,SpringBoot与传统Web 优缺对比...
  3. 采用.NET CORE的全异步模式打造一款免费的内网穿透工具--NSmartProxy
  4. mysql查询20-30的数据_20. mysql查询表的数据大小
  5. STM32F103系列实战之通用同步异步收发器(USART)
  6. 为什么黑客都用python-python为什么会作为黑客的首选语言?这几本书给你答案(已集齐)...
  7. C# SendMessage 全集
  8. Servlet教程第6讲笔记
  9. DOM中 property 和 attribute 详解
  10. SpringBoot中Interceptor和Filter的使用
  11. fluent设置uds c语言程序,Fluent中UDF和UDS二次开发高级实例专题
  12. IEC 60335标准介绍
  13. 华三H3C交换机如何配置和使用telnet远程登录设备
  14. 漫谈工业软件(2)-IEC61499标准
  15. 【笔记总结】C陷阱与缺陷
  16. 服务器如何管理和维护,运维人员是如何管理上千台服务器的?
  17. 华为鸿蒙新闻发布会,华为鸿蒙2.0、EMUI 11齐发 打通手机、电视、PC全平台
  18. FFmpeg获取视频旋转角度rotate获取不到的问题解决
  19. action层,dao层,service层,domain层,util层,common层含义是什么?
  20. 我就是这样学 Python 的

热门文章

  1. 积分系统的积分运营避雷指南
  2. win10将IE11兼容ie10
  3. Java 汉字转拼音首字母缩写
  4. 咸鱼ZTMS实例—智能车配件
  5. ffplay 控制音量的代码实现
  6. File.createTempFile使用之后要调用重启java之后删除delete方法是哪个
  7. 无线接入认证web服务器搭建,基于WEB和RADIUS的无线局域网接入认证系统
  8. Win系统设置热键提示 / 大写锁定提示 | 解决热键提示冲突
  9. 计算机学院品牌活动方案,武汉大学计算机学院2017年优秀大学生暑期夏令营活动实施方案...
  10. php chown,PHP chown( )用法及代码示例