使用SetPrinter修改打印机名称
最近项目需要修改打印机名称
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修改打印机名称相关推荐
- win10打印机服务器属性修改,大师教你win10如何修改打印机名称的完全处理办法...
有网友说他的电脑总是爱出一些怪问题,这不就出现了win10如何修改打印机名称,新手处理关于win10如何修改打印机名称的问题不是特别容易,如果你现在找不到专业的人员来解决win10如何修改打印机名称这 ...
- 如何使用 SetPrinter 修改打印机设置
SetPrinter 是新 API for Windows 95. Windows NT. Windows 2000 和 Windows XP,允许应用程序更改各种打印机属性. 但是,如本文中的代码所 ...
- day inset_按 SetPrinter API 修改打印机设置 - Application Developer | Microsoft Docs
使用 SetPrinter 函数修改打印机设置 03/09/2020 本文内容 该 SetPrinter 函数允许应用程序更改各种打印机属性. 但是,如本文中的代码所示,一定数量的准备工作是正确调用所 ...
- .NET(C#) 查找打印机指定打印机名称打印代码(PrintDocument)
本文主要介绍.NET(C#)调用打印机打印相关操作(PrintDocument)代码,以及管理打印机的状态以及查询修改打印机属性,获取已安装的打印机驱动名,连接打印机并发送指令方法. 原文地址:.NE ...
- 解决:操作无法完成(错误0x00000709)。再次检查打印机名称,并确保打印机已连接到...
上午同时说,网络打印机打印不了,于是首先看一下打印服务器IP是不是给换了,结果没换. 接着尝试重新添加一下网络打印机,结果问题来了,连不上,提示: 操作无法完成(错误0x00000709).再次检查打 ...
- idea批量修改变量快捷键mac_使用Mac自带功能批量修改图片名称、类型和压缩图片大小...
Mac电脑自带的聚焦搜索功能已经很强大,可以快速准确的搜索电脑内的文件,但是从网上下载的文件,特别是一些图片文件都是一串数字组成的文件名,很难记忆和搜索,我们可以使用Mac自带的『自动操作』功能给图片 ...
- 在leangoo里怎么添加和移动列表,怎么修改列表名称?
添加列表两种方式: 点击看板内的添加列表按钮,添加列表 点击看板内空白位置,即可在当前位置插入一个空列表. 修改列表名称: 点击列表名即可快速修改名称: 浏览器访问官网:leangoo.com
- 批量修改文件名称(Python)
本程序功能:批量修改文件名称 import os import redef replaceDirName(rootDir): # 修改rootDir路径下的文件夹名num = 0dirs = os.l ...
- 修改项目名称后,部署到tomcat问题
1.问题描述: 修改项目名称后,部署到tomcat问题 解决方案: 项目->属性->myelcipse->web下,修改web context root就可! 2.去掉超链接默认的行 ...
最新文章
- 为图片添加半透明遮罩效果
- 在tomcat上部署项目需要打成jar_Spring Boot Web 项目教程,SpringBoot与传统Web 优缺对比...
- 采用.NET CORE的全异步模式打造一款免费的内网穿透工具--NSmartProxy
- mysql查询20-30的数据_20. mysql查询表的数据大小
- STM32F103系列实战之通用同步异步收发器(USART)
- 为什么黑客都用python-python为什么会作为黑客的首选语言?这几本书给你答案(已集齐)...
- C# SendMessage 全集
- Servlet教程第6讲笔记
- DOM中 property 和 attribute 详解
- SpringBoot中Interceptor和Filter的使用
- fluent设置uds c语言程序,Fluent中UDF和UDS二次开发高级实例专题
- IEC 60335标准介绍
- 华三H3C交换机如何配置和使用telnet远程登录设备
- 漫谈工业软件(2)-IEC61499标准
- 【笔记总结】C陷阱与缺陷
- 服务器如何管理和维护,运维人员是如何管理上千台服务器的?
- 华为鸿蒙新闻发布会,华为鸿蒙2.0、EMUI 11齐发 打通手机、电视、PC全平台
- FFmpeg获取视频旋转角度rotate获取不到的问题解决
- action层,dao层,service层,domain层,util层,common层含义是什么?
- 我就是这样学 Python 的
热门文章
- 积分系统的积分运营避雷指南
- win10将IE11兼容ie10
- Java 汉字转拼音首字母缩写
- 咸鱼ZTMS实例—智能车配件
- ffplay 控制音量的代码实现
- File.createTempFile使用之后要调用重启java之后删除delete方法是哪个
- 无线接入认证web服务器搭建,基于WEB和RADIUS的无线局域网接入认证系统
- Win系统设置热键提示 / 大写锁定提示 | 解决热键提示冲突
- 计算机学院品牌活动方案,武汉大学计算机学院2017年优秀大学生暑期夏令营活动实施方案...
- php chown,PHP chown( )用法及代码示例