怎么获得本机的可用的所有打印机的列表,并设置一个为当前打印机?
请各位做过打印程序的帮忙,谢谢。

解决方案 »

  1.   

    增加
    using System.Collections.Specialized;
    using System.Management;
    使用此方法:
            public static StringCollection GetPrintersCollection()
            {
                StringCollection printerNameCollection = new StringCollection();
                string searchQuery = "SELECT * FROM Win32_Printer";
                ManagementObjectSearcher searchPrinters =
                      new ManagementObjectSearcher(searchQuery);
                ManagementObjectCollection printerCollection = searchPrinters.Get();
                foreach (ManagementObject printer in printerCollection)
                {
                    printerNameCollection.Add(printer.Properties["Name"].Value.ToString());
                }
                return printerNameCollection;
            }
    获取:
                StringCollection sc = GetPrintersCollection();
                for (int i = 0; i < sc.Count; i++)
                {
                    //得到可用打印机名列表
                    MessageBox.Show(sc[i].ToString());
                }
      

  2.   

    wooting(不醉):谢谢,再问一个,
    怎么把选中的打印机设为 默认打印机?
      

  3.   

    使用API
    http://support.microsoft.com/kb/246772/zh-cn
      

  4.   

    //设为默认打印机.
            public static bool SetDefaultPrinter(string printerName)
            {
                bool setDefaulted = false;
                ManagementObjectSearcher query;
                ManagementObjectCollection querycollection;
                string _classname = "select * from win32_printer";            query = new ManagementObjectSearcher(_classname);
                querycollection = query.Get();            foreach (ManagementObject mo in querycollection)
                {
                    if (string.Compare(mo["name"].ToString(), printerName, true) == 0)
                    {
                        mo.InvokeMethod("setdefaultprinter", null);
                        setDefaulted = true;
                        break;
                    }
                }
                return setDefaulted;
            }