Получить список сетевых и локальных принтеров в ASP.NET
В этом методе используется инструментарий управления Windows или интерфейс WMI. Это технология, используемая для получения информации о различных системах (оборудовании), работающих в операционной системе 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());}}
Как указано в документации: классы в пространстве имен System.Printing не поддерживаются для использования в службе Windows, приложении или службе ASP.NET.
Это очень интересный ответ. Если вам нужны только имена, принятый ответ правильный. Если вам нужны другие данные, использование запроса к win32_Printer намного медленнее, чем выполнение этого вызова
Noman_1
0
Если вы работаете с MVC C #, это способ справиться с принтерами и последовательными портами для раскрывающихся списков.
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);}}
Если вам нужно больше информации, чем просто имя принтера, вы можете использовать
System.Management
API для их запроса:источник
Посмотрите на статическое свойство System.Drawing.Printing.PrinterSettings.InstalledPrinters .
Это список имен всех принтеров, установленных в системе.
источник
Получить список сетевых и локальных принтеров в ASP.NET
В этом методе используется инструментарий управления Windows или интерфейс WMI. Это технология, используемая для получения информации о различных системах (оборудовании), работающих в операционной системе Windows.
Нажмите здесь, чтобы загрузить исходный код и демонстрацию приложения
Демонстрация приложения, в котором перечислены сетевой и локальный принтер
источник
Вы также можете использовать класс LocalPrintServer. См .: System.Printing.LocalPrintServer.
Как указано в документации: классы в пространстве имен System.Printing не поддерживаются для использования в службе Windows, приложении или службе ASP.NET.
источник
Если вы работаете с MVC C #, это способ справиться с принтерами и последовательными портами для раскрывающихся списков.
источник