2009-11-09 2 views
0

새 .net 인쇄 API (System.Printing.dll)를 사용하여 네트워크 프린터의 IPAddress를 얻는 방법은 무엇입니까?새로운 .net 인쇄 API (System.Printing.dll)를 사용하여 네트워크 프린터의 IPAddress를 얻는 방법은 무엇입니까?

내가보고 오전 수업은 여기

답변

0

지금까지 가지고 있습니다. 나는 포트의 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] 
         }; 
     } 
    } 
} 
+0

그래서 ASP.NET에서 네트워크 프린터로 인쇄 할 수 있습니까? http://stackoverflow.com/questions/3729153/printing-from-asp-net-to-a-network-printer에서 내 질문을 참조하십시오. – Prabhu

0

몇 가지 예제 코드입니다 프린터 :

IPHostEntry hostInfo = Dns.GetHostByName("MachineName");  
string IPAddress = hostInfo.AddressList[0].ToString(); 
+0

프린터 이름은 어떻게 알 수 있습니까? PrintQueue.Name은 사용자가 설정할 수있는 컴퓨터 이름이 아닙니다. – Simon

+0

이 (@ "\\ PrinterServerName") 프린터 서버 이름이 아닙니다. 프린트 서버 인 –

+0

. 하지만 그 서버의 각 프린터는 자체 ipaddress를 가질 수 있습니다. – Simon

관련 문제