引言
需要引入
System.Drawing.Printing
System.Management
實(shí)現(xiàn)
1.獲取打印機(jī)列表
2.獲取默認(rèn)打印機(jī)
3.設(shè)置默認(rèn)打印機(jī)
上代碼
public class PrinterExample
{
/// <summary>
/// 設(shè)置默認(rèn)打印機(jī)
/// </summary>
/// <param name="Name"></param>
/// <returns></returns>
[DllImport("winspool.drv")]
public static extern bool SetDefaultPrinter(String Name); //調(diào)用win api將指定名稱的打印機(jī)設(shè)置為默認(rèn)打印機(jī)
/// <summary>
/// 獲取默認(rèn)打印機(jī)
/// </summary>
/// <returns></returns>
public static string GetDefaultPrinter()
{
PrintDocument print = new PrintDocument();
string defaultName = print.PrinterSettings.PrinterName;//默認(rèn)打印機(jī)名
return defaultName;
}
/// <summary>
/// 獲取本地所有打印機(jī)
/// </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>
/// 獲取本地所有打印機(jī) 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;
}
}