मानक प्रिंटडिअलॉग में चयनित प्रिंटर से जुड़े चार मान हैं: स्थिति, प्रकार, कहां, और टिप्पणी।.NET में प्रिंटर जानकारी कैसे प्राप्त करें?
यदि मुझे प्रिंटर का नाम पता है, तो मैं इन मानों को सी # 2.0 में कैसे प्राप्त कर सकता हूं?
मानक प्रिंटडिअलॉग में चयनित प्रिंटर से जुड़े चार मान हैं: स्थिति, प्रकार, कहां, और टिप्पणी।.NET में प्रिंटर जानकारी कैसे प्राप्त करें?
यदि मुझे प्रिंटर का नाम पता है, तो मैं इन मानों को सी # 2.0 में कैसे प्राप्त कर सकता हूं?
dowski suggested के रूप में, आप प्रिंटर गुण प्राप्त करने के लिए WMI का उपयोग कर सकते हैं। निम्न कोड किसी दिए गए प्रिंटर नाम के लिए सभी गुण प्रदर्शित करता है। उनमें से आप पाएँगे: PrinterStatus, टिप्पणी, स्थान, drivername, PORTNAME, आदि
using System.Management;
...
string printerName = "YourPrinterName";
string query = string.Format("SELECT * from Win32_Printer WHERE Name LIKE '%{0}'", printerName);
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
using (ManagementObjectCollection coll = searcher.Get())
{
try
{
foreach (ManagementObject printer in coll)
{
foreach (PropertyData property in printer.Properties)
{
Console.WriteLine(string.Format("{0}: {1}", property.Name, property.Value));
}
}
}
catch (ManagementException ex)
{
Console.WriteLine(ex.Message);
}
}
यह एक लंबा समय रहा है क्योंकि मैंने विंडोज वातावरण में काम किया है, लेकिन मैं सुझाव दूंगा कि आप using WMI देखें।
यह चाहिए काम पर देखो।
using System.Drawing.Printing;
...
PrinterSettings ps = new PrinterSettings();
ps.PrinterName = "The printer name"; // Load the appropriate printer's setting
उसके बाद, PrinterSettings के विभिन्न properties पढ़ा जा सकता है।
ध्यान दें कि ps.isValid()
देख सकता है कि प्रिंटर वास्तव में मौजूद है या नहीं।
संपादित करें: एक अतिरिक्त टिप्पणी। माइक्रोसॉफ्ट आपको PrintDocument का उपयोग करने की सलाह देता है और प्रिंटर सेटिंग्स को सीधे प्रिंटर सेटिंग्स बनाने के बजाय संशोधित करता है।
उर पद वास्तव में मदद की। लेकिन मुझे आईपीए पता और पोर्ट नाम भी चाहिए। चयनित/लोड प्रिंटर के लिए आईपी पता और पोर्ट नाम कैसे प्राप्त करें ...? – Ashutosh
चयनित उत्तर विधि का उपयोग करके ऐसा करने का एक बुरा तरीका है, यह प्रिंटर के लिए सर्वर का नाम देता है और यदि हम उस नाम को पिंग करते हैं तो यह आईपी पते पर हल हो जाता है और वहां पिंग परिणाम को पार्स किया जा सकता है। कृपया मुझे बताएं कि – Ashutosh
करने का कोई बेहतर तरीका है। मैं .NET 4.5 का उपयोग करता हूं, .NET 4.5 – AmirhosseinYari
नोटिस दें कि लेख कि dowski और Panos (MSDN Win32_Printer) को रेफरिंग कर रहा था थोड़ा भ्रामक हो सकता है।
मैं अधिकांश सरणी के पहले मूल्य का जिक्र कर रहा हूं। कुछ 1 के साथ शुरू होता है और कुछ 0. उदाहरण के लिए साथ शुरू होता है, "ExtendedPrinterStatus" तालिका में पहला मान 1 है इसलिए, आपके सरणी कुछ इस तरह होना चाहिए:
string[] arrExtendedPrinterStatus = {
"","Other", "Unknown", "Idle", "Printing", "Warming Up",
"Stopped Printing", "Offline", "Paused", "Error", "Busy",
"Not Available", "Waiting", "Processing", "Initialization",
"Power Save", "Pending Deletion", "I/O Active", "Manual Feed"
};
और दूसरे हाथ पर, " ErrorState "तालिका में पहले मान 0 इसलिए, आपके सरणी कुछ इस तरह होना चाहिए,:
string[] arrErrorState = {
"Unknown", "Other", "No Error", "Low Paper", "No Paper", "Low Toner",
"No Toner", "Door Open", "Jammed", "Offline", "Service Requested",
"Output Bin Full"
};
Btw, " PrinterState "अप्रचलित है, लेकिन आप कर सकते हैं "प्रिंटरस्टैटस" का उपयोग करें।
बस संदर्भ के लिए, here प्रिंटर प्रबंधनऑब्जेक्ट के लिए सभी उपलब्ध गुणों की एक सूची है।
usage: printer.Properties["PropName"].Value
डब्लूएमआई के विकल्प के रूप में आप WinSpool.drv में टैप करके तेजी से सटीक परिणाम प्राप्त कर सकते हैं (यानी।Windows API) - आप इंटरफेस, structs pinvoke.net से & स्थिरांक पर सभी जानकारी प्राप्त कर सकते हैं, या मैं http://delradiesdev.blogspot.com/2012/02/accessing-printer-status-using-winspool.html
पर कोड डाल दिया है एक साथ मैं जानता हूँ कि यह एक पुरानी पोस्ट कर रहा है, लेकिन आजकल आसान/तेज विकल्प WPF ढांचे (गैर-WPF ऐप्स द्वारा उपयोग योग्य) द्वारा प्रदान की गई उन्नत मुद्रण सेवाओं का उपयोग करना है।
http://msdn.microsoft.com/en-us/library/System.Printing(v=vs.110).aspx
एक उदाहरण प्रिंटर कतार और पहले कार्य की स्थिति को पुनः प्राप्त करने ..
var queue = new LocalPrintServer().GetPrintQueue("Printer Name");
var queueStatus = queue.QueueStatus;
var jobStatus = queue.GetPrintJobInfoCollection().FirstOrDefault().JobStatus
दोनों स्थानीयप्रिंटसेवर और GetPrintQueue से लौटाई गई कतार IDISposable हैं, इसलिए आपको इसे वास्तव में उपयोग करने वाले कॉल में लपेटना चाहिए। का उपयोग करते हुए (वर LPS = नए LocalPrintServer()) { का उपयोग कर (वर कतार = lps.GetPrintQueue (printerName)) { वर queueStatus = queue.QueueStatus; var jobStatus = queue.GetPrintJobInfoCollection()। FirstOrDefault()। जॉबस्टैटस; } } – crunchy
में उपलब्ध नहीं है, यह काम करता है, मैं आवश्यक सभी गुणों को ढूंढ और पढ़ने में सक्षम था। धन्यवाद! प्रिंटर के गुणों में –
मैं प्रिंटर.प्रॉपर्टीज ["प्रिंटरस्टैटस"] का उपयोग कर रहा हूं। मूल्य, और यह मुझे मूल्य दे रहा है 2. इस मान का अर्थ क्या है i.e. 2? क्या कोई सूची है जहां हम लौटाए गए मूल्यों का अर्थ जान सकते हैं? – HotTester
मेरे पास एचपी स्कैनजेट 55 9 0 स्कैनर है, सभी ड्राइवर स्थापित हैं और यह डॉक्स स्कैनिंग ठीक है। लेकिन जब मैं स्कैनर की स्थिति प्राप्त करने के लिए डब्लूएमआई का उपयोग करता हूं, तो डब्लूएमआई इसका पता नहीं लगा रहा है। विन -7 के नियंत्रण कक्ष में, यह मुख्य उपकरणों के तहत दिखाया गया है और डिवाइस और प्रिंटर अनुभाग में मुख्य प्रिंटर के तहत नहीं। स्कैनर की स्थिति कैसे प्राप्त करें? – HotTester