지금까지 가지고 있습니다. 나는 포트의 ipaddress를 얻기 위해 ManagementObjectSearcher에 의존해야만했다.
나는이 대답을 지금 받아 들일 것입니다. 아무도 ManagementObjectSearcher없이이 작업을 수행하는 방법을 알고 있다면 그 대답을 대신 받아 들일 것입니다.
public virtual IEnumerable<Printer> GetPrinters()
{
var ports = new Dictionary<string, IPAddress>();
var selectQuery = new SelectQuery("Win32_TCPIPPrinterPort");
selectQuery.SelectedProperties.Add("CreationClassName");
selectQuery.SelectedProperties.Add("Name");
selectQuery.SelectedProperties.Add("HostAddress");
selectQuery.Condition = "CreationClassName = 'Win32_TCPIPPrinterPort'";
using (var searcher = new ManagementObjectSearcher(Scope, selectQuery))
{
var objectCollection = searcher.Get();
foreach (ManagementObject managementObjectCollection in objectCollection)
{
var portAddress = IPAddress.Parse(managementObjectCollection.GetProperty<string>("HostAddress"));
ports.Add(managementObjectCollection.GetProperty<string>("Name"), portAddress);
}
}
using (var printServer = new PrintServer(string.Format(@"\\{0}", PrinterServerName)))
{
foreach (var queue in printServer.GetPrintQueues())
{
if (!queue.IsShared)
{
continue;
}
yield return new Printer
{
Location = queue.Location,
Name = queue.Name,
PortName = queue.QueuePort.Name,
PortAddress = ports[queue.QueuePort.Name]
};
}
}
}
그래서 ASP.NET에서 네트워크 프린터로 인쇄 할 수 있습니까? http://stackoverflow.com/questions/3729153/printing-from-asp-net-to-a-network-printer에서 내 질문을 참조하십시오. – Prabhu