Joj*_*dez 181
试试这个:
foreach (string printer in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
{
MessageBox.Show(printer);
}
Run Code Online (Sandbox Code Playgroud)
小智 51
如果您需要的信息不仅仅是打印机的名称,您可以使用System.Management
API查询它们:
var printerQuery = new ManagementObjectSearcher("SELECT * from Win32_Printer");
foreach (var printer in printerQuery.Get())
{
var name = printer.GetPropertyValue("Name");
var status = printer.GetPropertyValue("Status");
var isDefault = printer.GetPropertyValue("Default");
var isNetworkPrinter = printer.GetPropertyValue("Network");
Console.WriteLine("{0} (Status: {1}, Default: {2}, Network: {3}",
name, status, isDefault, isNetworkPrinter);
}
Run Code Online (Sandbox Code Playgroud)
小智 9
您还可以使用 LocalPrintServer 类。请参阅:System.Printing.LocalPrintServer
public List<string> InstalledPrinters
{
get
{
return (from PrintQueue printer in new LocalPrintServer().GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local,
EnumeratedPrintQueueTypes.Connections }).ToList()
select printer.Name).ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
如文档中所述:不支持在 Windows 服务或 ASP.NET 应用程序或服务中使用 System.Printing 命名空间中的类。
小智 8
在ASP.NET中获取网络和本地打印机列表
此方法使用Windows Management Instrumentation或WMI界面.它是一种用于获取有关在Windows操作系统上运行的各种系统(硬件)的信息的技术.
private void GetAllPrinterList()
{
ManagementScope objScope = new ManagementScope(ManagementPath.DefaultPath); //For the local Access
objScope.Connect();
SelectQuery selectQuery = new SelectQuery();
selectQuery.QueryString = "Select * from win32_Printer";
ManagementObjectSearcher MOS = new ManagementObjectSearcher(objScope, selectQuery);
ManagementObjectCollection MOC = MOS.Get();
foreach (ManagementObject mo in MOC)
{
lstPrinterList.Items.Add(mo["Name"].ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
列出网络和本地打印机的应用程序的演示
归档时间: |
|
查看次数: |
104127 次 |
最近记录: |