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 = ;
bool bolRet = PrintAPI.GetPrinter(hPrinter, , IntPtr.Zero, , out cbNeeded);
if (cbNeeded >= )
{
IntPtr pAddr = Marshal.AllocHGlobal((int)cbNeeded);
bolRet = PrintAPI.GetPrinter(hPrinter, , 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, , pPrinter, );
Marshal.FreeHGlobal(pPrinter);
}
Marshal.FreeHGlobal(pAddr);
}
PrintAPI.ClosePrinter(hPrinter);
return bolRet;
}
return false;
} 原文链接:https://blog.csdn.net/wf2397108372/article/details/91046286

注意事项:

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

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

c++修改打印机名称的更多相关文章

  1. SQL SERVER 2005修改数据库名称,包括物理文件名和逻辑名称

    SQL SERVER 2005修改数据库名称,包括物理文件名和逻辑名称   原来数据库名称为 aa,物理文件名称为 aa.mdf 和 aa_log.ldf:   需要修改数据库名称为 bb,物理文件名 ...

  2. Android开发中上线后修改应用名称的若干问题

    一.在Android Studio 1.3中修改app的包名: 需求来源: 之前开发的app已经在腾讯的应用宝上线,应客户要求,app需要改名字,这个就有点麻烦了.如果申请改名字,要求如下: 截图上图 ...

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

    问题描述: 修改项目名称后,部署到tomcat server,部署出来的文件夹名还是旧的名称. 解决方案: 光把项目重命名是不够的,还要修改一下Myeclipse里面的配置. 工程名->右键-& ...

  4. linux修改网卡名称

    本文转载自江一<linux修改网卡名称> 终端输入:vi /etc/udev/rules.d/70-persistent-net.rules 出现以下文件 # This file was ...

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

    问题描述: 修改项目名称后,部署到tomcat问题 解决方案: 项目->属性->myelcipse->web下,修 改web context root就可! 要在eclipse里面改 ...

  6. java笔记--查看和修改线程名称

    查看和修改线程名称 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3893797.html  "谢谢-- java是一种允许 ...

  7. MS SQL 多连接数时修改数据库名称

    在MS SQL中,如果你想修改某一个数据库的名称,你可以通过下面几种方法实现. 方法一:使用SP_RENAMEDB系统存储过程实现. 语法: sp_renamedb [ @dbname = ] 'ol ...

  8. 批量修改照片名称的shell脚本

    代码这种经常完善的东西,其实是不太适合使用博客来发布的. 以下是一个批量修改照片名称的shell脚本: 事情是这样的,虽然手机拍的照片文件名是按照日期来确定的,但是是这种形式的 IMG_mmddYY_ ...

  9. 怎样在mysql里面修改数据库名称

    怎样在mysql里面修改数据库名称       提供三种方法:1. RENAME DATABASE db_name TO new_db_name这个..这个语法在mysql 5.1.7中被添加进来,到 ...

随机推荐

  1. Web API design

    Web API design 28 minutes to read Most modern web applications expose APIs that clients can use to i ...

  2. java 练习(公司年销售额求和)

    /*B:公司年销售额求和 某公司按照季度和月份统计的数据如下:单位(万元) 第一季度:22,66,44 第二季度:77,33,88 第三季度:25,45,65 第四季度:11,66,99 */ int ...

  3. Log4net 单独创建配置文件(三)

    1.建立ASP.Net空的Web程序,添加Default.aspx窗体 2.添加web配置文件命名为:log4net.config,添加配置 <?xml version="1.0&qu ...

  4. HTML相对路径和绝对路径

     一.相对路径 相对路径不带有盘符,通常是以HTML网页文件为起点,通过层级关系描述目标图像的位置. 相对于文件自身出发,就是相对路径. 主要有以下几种情况:   ①文件和图片(html文档)在同一个 ...

  5. 开源项目 07 AutoMapper

    using AutoMapper; using Newtonsoft.Json; using System; using System.Collections.Generic; using Syste ...

  6. P1099 树网的核——模拟+树形结构

    P1099 树网的核 无根树,在直径上找到一条长度不超过s的路径,使得最远的点距离这条路径的距离最短: 首先两遍dfs找到直径(第二次找的时候一定要吧father[]清零) 在找到的直径下枚举长度不超 ...

  7. MATLAB关闭科学计数法显示

  8. Python plot_surface(Axes3D)方法:绘制3D图形

    3D 图形需要的数据与等高线图基本相同:X.Y 数据决定坐标点,Z 轴数据决定 X.Y 坐标点对应的高度.与等高线图使用等高线来代表高度不同,3D 图形将会以更直观的形式来表示高度. 为了绘制 3D ...

  9. [转]OpenGL图形渲染管线、VBO、VAO、EBO概念及用例

    直接给出原文链接吧 1.OpenGL图形渲染管线.VBO.VAO.EBO概念及用例 2.OpenGL中glVertex.显示列表(glCallList).顶点数组(Vertex array).VBO及 ...

  10. 详解python3如何调用c语言代码

    本文链接:https://blog.csdn.net/u012247418/article/details/80170690开发环境linux: python3.5.2 + ubuntu-gnome- ...