C#获取打印机列表方法介绍

方法一

第一步:添加引用

using system.printing;

第二步:代码

public static list<string> getprintlist()
{
    list<string> lt = new list<string>();
    localprintserver printserver = new localprintserver();
    printqueuecollection printqueuesonlocalserver = printserver.getprintqueues(new[] { enumeratedprintqueuetypes.local });
    foreach (printqueue printer in printqueuesonlocalserver)
        lt.add(printer.name);
    return lt;
}

方法二

需要引入

system.drawing.printing
system.management

实现

1.获取打印机列表
2.获取默认打印机
3.设置默认打印机

上代码

    public class printerexample
    {
        /// <summary>
        /// 设置默认打印机
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        [dllimport("winspool.drv")]
        public static extern bool setdefaultprinter(string name); //调用win api将指定名称的打印机设置为默认打印机

        /// <summary>
        /// 获取默认打印机
        /// </summary>
        /// <returns></returns>
        public static string getdefaultprinter()
        {
            printdocument print = new printdocument();
            string defaultname = print.printersettings.printername;//默认打印机名
            return defaultname;
        }

        /// <summary>
        /// 获取本地所有打印机
        /// </summary>
        /// <returns></returns>
        public static list<string> getlocalprinters()
        {
            list<string> printer_names = new list<string>();
           
            foreach (string item in printersettings.installedprinters)
            {
                printer_names.add(item);

            }
            return printer_names;
        }

        /// <summary>
        /// 获取本地所有打印机 system.management方式获取
        /// </summary>
        /// <returns></returns>
        public static list<string> getlocalprinters2()
        {
            list<string> printer_names = new list<string>();

            managementobjectcollection querycollection;
            string _classname = "select * from win32_printer";

            dictionary<string, managementobject> dict = new dictionary<string, managementobject>();
            managementobjectsearcher query = new managementobjectsearcher(_classname);
            querycollection = query.get();

            foreach (managementobject mo in querycollection)
            {
                string oldname = mo["name"].tostring();
                printer_names.add(oldname);


            }
            return printer_names;
        }
    }

到此这篇关于c#获取打印机列表的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。

相关推荐:

Django Formset 返回空字典列表的解决方案

当DjangoFormset验证通过但cleaned_data为全空字典列表时,根本原因在于表单字段未被正确识别——关键问题出在CheckboxInput是Widget而非Field,且模板中手动渲染的checkbox缺乏与Form字段的绑定机制。 当djangoformset验证通过但`clean...