कंप्यूटर में सभी प्रिंटर की सूची कैसे प्राप्त करें


99

मुझे उन सभी प्रिंटरों की सूची प्राप्त करने की आवश्यकता है जो कंप्यूटर से कनेक्ट होते हैं?

मैं इसे C #, WinForms में कैसे कर सकता हूं?

जवाबों:



57

यदि आपको प्रिंटर के नाम से अधिक जानकारी चाहिए तो आप System.Managementउन्हें क्वेरी करने के लिए एपीआई का उपयोग कर सकते हैं:

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);
}

22

स्टैटिक सिस्टम को देखें। क्रैकिंग.प्रिन्टिंग.प्रिन्टरसेटिंग.इन्स्टाल्डप्रिंटर संपत्ति।

यह सिस्टम पर सभी स्थापित प्रिंटर के नामों की एक सूची है।


MSDN लिंक के लिए धन्यवाद!
पल्सम ४

8

ASP.NET में नेटवर्क और लोकल प्रिंटर लिस्ट प्राप्त करें

यह विधि Windows प्रबंधन इंस्ट्रूमेंटेशन या WMI इंटरफ़ेस का उपयोग करती है। यह विंडोज ऑपरेटिंग सिस्टम पर चलने वाली विभिन्न प्रणालियों (हार्डवेयर) के बारे में जानकारी प्राप्त करने के लिए उपयोग की जाने वाली तकनीक है।

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());
            }
        }

स्रोत और एप्लिकेशन डेमो डाउनलोड करने के लिए यहां क्लिक करें

आवेदन का डेमो जो सूचीबद्ध नेटवर्क और स्थानीय प्रिंटर

यहां छवि विवरण दर्ज करें


ASP.NET में भी आपका डेमो है?
एएए

5

आप 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(); 
        } 
    }

डॉक्स में कहा गया है: System.Printing नामस्थान के भीतर कक्षाएं विंडोज सेवा या ASP.NET एप्लिकेशन या सेवा के भीतर उपयोग के लिए समर्थित नहीं हैं।


क्या आप कोड के साथ जाने के लिए स्पष्टीकरण जोड़ सकते हैं?
झपट्ट

यह एक बहुत ही दिलचस्प जवाब है। यदि आपको केवल नामों की आवश्यकता है, तो स्वीकृत उत्तर सही है। आप अन्य डेटा की जरूरत है, win32_Printer लिए क्वेरी का उपयोग जिस तरह से इस कॉल कर की तुलना में धीमी है
Noman_1

0

यदि आप MVC C # के साथ काम कर रहे हैं, तो यह ड्रॉपडाउन के लिए प्रिंटर और सीरियल पोर्ट से निपटने का तरीका है।

using System.Collections.Generic;
using System.Linq;
using System.IO.Ports;
using System.Drawing.Printing;

    public class Miclass
    {
        private void AllViews()
        {
            List<PortClass> ports = new List<PortClass>();
            List<Printersclass> Printersfor = new List<Printersclass>();
            string[] portnames = SerialPort.GetPortNames();
            /*PORTS*/
            for (int i = 0; i < portnames.Count(); i++)
            {
                ports.Add(new PortClass() { Name = portnames[i].Trim(), Desc = portnames[i].Trim() });
            }
            /*PRINTER*/
            for (int i = 0; i < PrinterSettings.InstalledPrinters.Count; i++)
            {
                Printersfor.Add(new Printersclass() { Name = PrinterSettings.InstalledPrinters[i].Trim(), Desc = PrinterSettings.InstalledPrinters[i].Trim() });
            }
        }
    }
    public class PortClass
    {
        public string Name { get; set; }
        public string Desc { get; set; }

        public override string ToString()
        {
            return string.Format("{0} ({1})", Name, Desc);
        }
    }
    public class Printersclass
    {
        public string Name { get; set; }
        public string Desc { get; set; }

        public override string ToString()
        {
            return string.Format("{0} ({1})", Name, Desc);
        }
    }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.