コード例 #1
0
        /// <summary>
        /// Busca os dados de uma impressora lógica no sistema operacional. Caso duas ou mais
        /// impressoras possuam o mesmo nome a última encontrada é a que será retornada
        /// </summary>
        public static SysPrinter LocateSystemPrinter(String printerName)
        {
            SysPrinter sysPrinter = null;

            ManagementObjectSearcher printerSearcher;

            printerSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_Printer WHERE Name ='" + printerName + "'");

            ManagementObjectCollection printers = printerSearcher.Get();

            foreach (ManagementObject printer in printers)
            {
                sysPrinter                  = new SysPrinter();
                sysPrinter.Name             = (String)printer["Name"];
                sysPrinter.Port             = (String)printer["PortName"];
                sysPrinter.IsDefaultPrinter = (Boolean)printer["Default"];
                sysPrinter.SpoolEnabled     = (Boolean)printer["SpoolEnabled"];
                sysPrinter.IsQueued         = (Boolean)printer["Queued"];
                sysPrinter.DoCompleteFirst  = (Boolean)printer["DoCompleteFirst"];
                sysPrinter.KeepPrintedJobs  = (Boolean)printer["KeepPrintedJobs"];
                sysPrinter.ComputerName     = (String)printer["SystemName"];
                sysPrinter.Capabilities     = (PrinterCapabilityEnum[])printer["Capabilities"];
            }

            return(sysPrinter);
        }
コード例 #2
0
        /// <summary>
        /// Verifica se a impressora imprime em cores
        /// </summary>
        public static Boolean IsColorPrinter(String printerName)
        {
            Boolean isColorPrinter = false;

            SysPrinter printer = LocateSystemPrinter(printerName);

            foreach (PrinterCapabilityEnum capability in printer.Capabilities)
            {
                if (capability == PrinterCapabilityEnum.ColorPrinting)
                {
                    isColorPrinter = true;
                }
            }

            return(isColorPrinter);
        }
コード例 #3
0
        /// <summary>
        /// Mapeia as impressoras lógicas disponíveis para utilização no sistema de accounting
        /// Apenas impressoras associadas a um hardware e com spool habilitado, o parâmetro
        /// machineName pode ser fornecido para filtrar impressoras instaladas no computador
        /// com esse nome (ou null para considarar também impressoras compartilhadas por outros
        /// computadores)
        /// </summary>
        public static List <SysPrinter> MapSystemPrinters(String machineName)
        {
            // Lista as impressoras lógicas (incluídas no Sistema Operacional através de
            // "adicionar impressora"), as impressoras físicas podem ser localizadas através
            // de mensagens SNMP quando estão ligadas e escutando a porta 161
            List <SysPrinter> sysPrinters = new List <SysPrinter>();

            Dictionary <String, PrinterPort> portDic  = MapPrinterPorts();
            ManagementObjectCollection       printers = GetServerPrinters();

            foreach (ManagementObject printer in printers)
            {
                // Verifica se a impressora está associada a um dispositivo físico (hardware)
                Boolean hasPhysicalDevice = IsNetworkAttached(printer, portDic) || (Boolean)printer["EnableBIDI"];
                // Verifica se a impressora está fazendo "spool" dos documentos
                Boolean spoolEnabled = (Boolean)printer["SpoolEnabled"];
                // Verifica se a impressora é do computador ou se é uma impressora compartilhada por outros
                Boolean machineMatches = true;
                if (!String.IsNullOrEmpty(machineName))
                {
                    String computerName = (String)printer["SystemName"];
                    machineMatches = (machineName == computerName);
                }

                if (hasPhysicalDevice && spoolEnabled && machineMatches)
                {
                    SysPrinter sysPrinter = new SysPrinter();
                    sysPrinter.Name             = (String)printer["Name"];
                    sysPrinter.Port             = (String)printer["PortName"];
                    sysPrinter.IsDefaultPrinter = (Boolean)printer["Default"];
                    sysPrinter.SpoolEnabled     = (Boolean)printer["SpoolEnabled"];
                    sysPrinter.IsQueued         = (Boolean)printer["Queued"];
                    sysPrinter.DoCompleteFirst  = (Boolean)printer["DoCompleteFirst"];
                    sysPrinter.KeepPrintedJobs  = (Boolean)printer["KeepPrintedJobs"];
                    sysPrinter.ComputerName     = (String)printer["SystemName"];
                    sysPrinter.Capabilities     = (PrinterCapabilityEnum[])printer["Capabilities"];
                    sysPrinter.EnableBIDI       = (Boolean)printer["EnableBIDI"];
                    sysPrinters.Add(sysPrinter);
                }
            }

            return(sysPrinters);
        }