1.本地打印机
//添加引用并using System.Management; public static void AvailablePrinters() { ManagementScope ms = new ManagementScope(ManagementPath.DefaultPath); ms.Connect(); SelectQuery sq = new SelectQuery(); sq.QueryString = @"SELECT Name FROM Win32_Printer"; ManagementObjectSearcher mos = new ManagementObjectSearcher(ms, sq); ManagementObjectCollection oObjectCollection = mos.Get(); foreach (ManagementObject mo in oObjectCollection) MessageBox.Show(mo["Name"].ToString()); }
2.网络打印机
远程调用打印机:http://stackoverflow.com/questions/10888201/how-to-list-all-printers-on-network-computer
via System.Drawing.Printing foreach (String printer in PrinterSettings.InstalledPrinters) { Console.WriteLine(printer.ToString()+Environment.NewLine); }
via WMI public static void AvailablePrinters() { oManagementScope = new ManagementScope(ManagementPath.DefaultPath); oManagementScope.Connect(); SelectQuery oSelectQuery = new SelectQuery(); oSelectQuery.QueryString = @"SELECT Name FROM Win32_Printer"; ManagementObjectSearcher oObjectSearcher = new ManagementObjectSearcher(oManagementScope, @oSelectQuery); ManagementObjectCollection oObjectCollection = oObjectSearcher.Get(); foreach (ManagementObject oItem in oObjectCollection) { Console.WriteLine("Name : " + oItem["Name"].ToString()+ Environment.NewLine); } }
via PowerShell Get-WMIObject -class Win32_Printer -computer $printserver | Select Name,DriverName,PortName
相关:
https://msdn.microsoft.com/zh-cn/library/System.Drawing.Printing.PrinterSettings(v=vs.85).aspx
https://msdn.microsoft.com/en-us/library/aa394582(v=VS.85).aspx
https://msdn.microsoft.com/en-us/library/windows/desktop/dd835506(v=vs.85).aspx
https://msdn.microsoft.com/zh-cn/library/System.Management(v=vs.80).aspx
参考文章:
http://www.cnblogs.com/chengulv/archive/2012/12/29/2839303.html
================================================