zoukankan      html  css  js  c++  java
  • c++修改打印机名称

    
    
    
    
    
    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;
            }
    
    原文链接: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# 高级编程语言
    unity ForceMode
    UnityError 切换场景灯光变黑问题解决
    Unity Time.timeScale
    Unity 打开网页 Application.OpenURL(字符串);
    Unity www动态加载网上图片
    Unity GameObject.Find 和 transform.Find
    Unity UGUI按钮添加点击事件
    事务
    git和redis
  • 原文地址:https://www.cnblogs.com/freedomworld/p/12050479.html
Copyright © 2011-2022 走看看