2014-06-10 5 views
0

this 질문 덕분에 기본 인쇄 대기열을 검색하고 있습니다. DefaultPrintQueuePrintQueue를 비교하여 기본 인쇄 대기열을 확인하십시오.

그러나 인쇄 대기열 목록의 어떤 인쇄 대기열이 DefaultPrintQueue과 동일한 지 제대로 판단하는 방법은 무엇입니까?

이 나는 ​​시도했다 :

var dq = LocalPrintServer.GetDefaultPrintQueue(); 
foreach(PrintQueue pq in pqcOnLocalServer) 
{ 
    if(pq.Equals(dq)) 
    { 
     System.Console.WriteLine("Found default"); 
    } 
} 

하지만 두 객체가 분명 동일하지 않습니다. 나는 각각 PrintQueue의 속성을 기본값과 비교할 수 있다고 가정하지만, PrintQueue의 두 속성이 동일한 것을 나타내는 100 %를 결정하기 위해 어떤 속성을 사용해야합니까? PrintQueue?

답변

0

이 질문은 Expert Exchange 또는 Server Exchange에서 잘 수행되었을 수 있습니다. 내가 발견 한 것은 프린트 서버가 이미 프린터 서버에있는 기존 이름을 가진 서버의 프린터를 허용하지 않는다는 것입니다. 즉, 프린터는 서버 당 고유 한 이름을 가져야합니다.

사용자는 프린터 이름이 고유한지 비교하는 것뿐만 아니라 프린터 이름이 고유한지 확인해야합니다. 예를 들어, 열거 된 프린터를 연결할 때. 컴퓨터는 \\PRNTSRVR1\HQ_LaserJet01\\PRNTSRVR2\HQ_LaserJet01 인 두 개의 인쇄 서버에 연결할 수 있습니다. 연결된 서버를 확인하는 것도 중요합니다.

0

LocalPrintServer.DefaultPrintQueue 속성을 사용해 기본 인쇄 대기열을 가져 와서 PrintQueue.FullName을 비교하십시오. 이렇게하면 LocalPrintServerPrintQueueCollection을 반복 할 필요가 없습니다.

LocalPrintServer printServer = new LocalPrintServer(PrintSystemDesiredAccess.AdministrateServer); 
PrintQueue pq = printServer.DefaultPrintQueue; 

PrintQueue dq = LocalPrintServer.GetDefaultPrintQueue(); 

if (dq != null && pq.FullName.Equals(dq.FullName)) 
{ 
    Console.WriteLine("Found default print Queue: {0}", dq.FullName); 
} 

여전히 LocalPrintServerPrintQueueCollection을 반복해야하는 경우 아래의 구현을 시도 할 수 있습니다.

LocalPrintServer printServer = new LocalPrintServer(PrintSystemDesiredAccess.AdministrateServer); 

PrintQueue dq = LocalPrintServer.GetDefaultPrintQueue(); 

foreach (PrintQueue pq in printServer.GetPrintQueues()) 
{ 
    if (dq != null && pq.FullName.Equals(dq.FullName)) 
    { 
     Console.WriteLine("Found default print Queue: {0}", dq.FullName); 
    } 
} 
+0

당신이 문서 스테이션'FullName'이 유일한 문자열이라는 것을 알았을 가능성이 있습니다; 두 프린터가 동일한 'FullName'을 가지지 않음을 의미합니까? 나에게 우려되는 것은 [documentation] (http://msdn.microsoft.com/en-us/library/system.printing.printqueue.fullname (v = vs.110) .aspx)입니다. '이 속성의 값은 동일합니다. 이름. 이것이 제가 사용해온 접근법입니다. 더 좋은 방법이 있는지 알고 싶었을뿐입니다. – Kcvin

+0

'FullName'이 고유 한 문자열인지 여부를 나타내는 설명서를 찾지 못했습니다. 내가 잠시 시험을 볼거야. 나는 그것이 유일하지 않다는 것을 의심하고'FullName', 드라이버 이름 & 포트 이름의 조합을 사용해야 할 수도 있습니다. 당신이 해결하려고하는 문제를 말해 줄 수 있습니까? 사용자 관점에서 프린터 목록을 설치해야합니까? 아니면 원격 인쇄 서버를 관리하고 있습니까? 알려줘. – Jamleck

+0

로컬 컴퓨터 PrintQueues를 검색하여 결국 인쇄 티켓을 설정/병합합니다. 기본적으로 사용자가 두 프린터를 혼동하거나 두 프린터의 차이점을 알기를 원하지 않습니다. – Kcvin