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;

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

  • 相关阅读:
    2019-2020-1学期20192401《网络空间安全专业导论》第一周学习总结
    14201771010119穷吉
    13201771010119穷吉
    12穷吉201771010119
    11201771010119穷吉
    实验10穷吉201771010119
    实验九201771010119穷吉
    201771010119穷吉第八周
    七次201771010119穷吉
    实验六20177101010119穷吉
  • 原文地址:https://www.cnblogs.com/freedomworld/p/12050479.html
Copyright © 2011-2022 走看看