Uzyskaj listę drukarek sieciowych i lokalnych w ASP.NET
Ta metoda korzysta z Instrumentacji zarządzania Windows lub interfejsu WMI. Jest to technologia używana do uzyskiwania informacji o różnych systemach (sprzęcie) działających w systemie operacyjnym Windows.
privatevoidGetAllPrinterList(){ManagementScope objScope =newManagementScope(ManagementPath.DefaultPath);//For the local Access
objScope.Connect();SelectQuery selectQuery =newSelectQuery();
selectQuery.QueryString="Select * from win32_Printer";ManagementObjectSearcher MOS =newManagementObjectSearcher(objScope, selectQuery);ManagementObjectCollection MOC = MOS.Get();foreach(ManagementObject mo in MOC){
lstPrinterList.Items.Add(mo["Name"].ToString());}}
Jak stwierdzono w dokumentacji: Klasy w przestrzeni nazw System.Printing nie są obsługiwane w ramach usługi systemu Windows lub aplikacji lub usługi ASP.NET.
To bardzo interesująca odpowiedź. Jeśli potrzebujesz tylko nazwisk, zaakceptowana odpowiedź jest prawidłowa. Jeśli potrzebujesz innych danych, użycie zapytania do win32_Printer jest znacznie wolniejsze niż wykonanie tego wywołania
Noman_1
0
Jeśli pracujesz z MVC C #, jest to sposób na radzenie sobie z drukarkami i portami szeregowymi dla list rozwijanych.
using System.Collections.Generic;
using System.Linq;
using System.IO.Ports;
using System.Drawing.Printing;publicclassMiclass{privatevoidAllViews(){List<PortClass> ports =newList<PortClass>();List<Printersclass>Printersfor=newList<Printersclass>();string[] portnames =SerialPort.GetPortNames();/*PORTS*/for(int i =0; i < portnames.Count(); i++){
ports.Add(newPortClass(){Name= portnames[i].Trim(),Desc= portnames[i].Trim()});}/*PRINTER*/for(int i =0; i <PrinterSettings.InstalledPrinters.Count; i++){Printersfor.Add(newPrintersclass(){Name=PrinterSettings.InstalledPrinters[i].Trim(),Desc=PrinterSettings.InstalledPrinters[i].Trim()});}}}publicclassPortClass{publicstringName{get;set;}publicstringDesc{get;set;}publicoverridestringToString(){returnstring.Format("{0} ({1})",Name,Desc);}}publicclassPrintersclass{publicstringName{get;set;}publicstringDesc{get;set;}publicoverridestringToString(){returnstring.Format("{0} ({1})",Name,Desc);}}
Jeśli potrzebujesz więcej informacji niż tylko nazwa drukarki, możesz skorzystać z
System.Management
interfejsu API, aby je zapytać:źródło
Spójrz na statyczną właściwość System.Drawing.Printing.PrinterSettings.InstalledPrinters .
Jest to lista nazw wszystkich drukarek zainstalowanych w systemie.
źródło
Uzyskaj listę drukarek sieciowych i lokalnych w ASP.NET
Ta metoda korzysta z Instrumentacji zarządzania Windows lub interfejsu WMI. Jest to technologia używana do uzyskiwania informacji o różnych systemach (sprzęcie) działających w systemie operacyjnym Windows.
Kliknij tutaj, aby pobrać źródło i wersję demonstracyjną aplikacji
Wersja demonstracyjna aplikacji zawierająca listę drukarek sieciowych i lokalnych
źródło
Możesz także użyć klasy LocalPrintServer. Zobacz: System.Printing.LocalPrintServer
Jak stwierdzono w dokumentacji: Klasy w przestrzeni nazw System.Printing nie są obsługiwane w ramach usługi systemu Windows lub aplikacji lub usługi ASP.NET.
źródło
Jeśli pracujesz z MVC C #, jest to sposób na radzenie sobie z drukarkami i portami szeregowymi dla list rozwijanych.
źródło