উত্তর:
এটা চেষ্টা কর:
foreach (string printer in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
{
MessageBox.Show(printer);
}
আপনার যদি কেবল প্রিন্টারের নাম বাদে আরও তথ্যের প্রয়োজন হয় তবে আপনি System.Management
এগুলি জিজ্ঞাসা করতে API ব্যবহার করতে পারেন :
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);
}
স্থিতিশীল সিস্টেম.ড্রেইং.প্রিন্টিং.প্রিন্টারসেটিংস.ইনস্টলযুক্তপ্রিন্টরের সম্পত্তি দেখুন।
এটি সিস্টেমে ইনস্টল করা সমস্ত প্রিন্টারের নামের একটি তালিকা।
এএসপি.এনইটিতে নেটওয়ার্ক এবং স্থানীয় মুদ্রক তালিকা পান
এই পদ্ধতিটিতে উইন্ডোজ ম্যানেজমেন্ট ইনস্ট্রুমেন্টেশন বা ডাব্লুএমআই ইন্টারফেস ব্যবহার করা হয়। এটি একটি প্রযুক্তি যা উইন্ডোজ অপারেটিং সিস্টেমে চলমান বিভিন্ন সিস্টেম (হার্ডওয়্যার) সম্পর্কিত তথ্য পেতে ব্যবহৃত হয়।
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());
}
}
উত্স এবং অ্যাপ্লিকেশন ডেমো ডাউনলোড করতে এখানে ক্লিক করুন
অ্যাপ্লিকেশনের ডেমো যা নেটওয়ার্ক এবং স্থানীয় প্রিন্টার তালিকাভুক্ত করে
আপনি স্থানীয় মুদ্রণ সার্ভার ক্লাসও ব্যবহার করতে পারেন। দেখুন: সিস্টেম.প্রিন্টিং.লোকালাপ্রিন্ট সার্ভার
public List<string> InstalledPrinters
{
get
{
return (from PrintQueue printer in new LocalPrintServer().GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local,
EnumeratedPrintQueueTypes.Connections }).ToList()
select printer.Name).ToList();
}
}
ডক্সে যেমন বলা আছে: সিস্টেমের মধ্যে ক্লাসগুলি। উইন্ডোজ পরিষেবা বা এএসপি.এনইটি অ্যাপ্লিকেশন বা পরিষেবাদির মধ্যে প্রিন্টিং নেমস্পেস ব্যবহারের জন্য সমর্থিত নয়।
আপনি যদি এমভিসি সি # এর সাথে কাজ করছেন তবে ড্রপডাউনগুলির জন্য প্রিন্টার এবং সিরিয়াল পোর্টগুলির সাথে ডিল করার উপায় এটি।
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);
}
}