2014-10-22 2 views
2

나는 모든 프린터를 얻고 그들을 반복하려고 : 그것은 반환 프린터 미세에만 UserPrintTicket을 일하고처럼 보이는PrintServer.GetPrintQueue가 올바른 PrintTicket을 가져 오지 않는 이유는 무엇입니까?

 Dim printServer As New PrintServer()   
     For Each printer As PrintQueue In printServer.GetPrintQueues({EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections}) 
      ... 
     Next 

가 올바르지 않습니다. 프린터 설정에서 가로 모드로 프린터를 설정하고이 방법을 사용하면 프린터 .UserPrintTicket이 세로 모드로 유지됩니다.

는하지만 내가 할 경우 (그리고는 캐치) :

 printServer.GetPrintQueue(printerName) 

그럼 내 UserPrintTicket이 올바른 것입니다. 나는이 기능을 사용하여 네트워크 프린터에 액세스하는 방법을 찾지 못하는 것만을 사용합니다. 그리고 여러 가지 방법으로 시도해 보았습니다.

그래서 여기 내 두 가지 질문입니다 :

지구에이 겉으로는 동일한 방법과는 다른 UserPrintTicket 이유
  1. ?
  2. GetPrintQueue를 사용하여 네트워크 프린터를 얻으려면 어떻게해야합니까?
+0

나는 이것이 좀 늦다는 것을 알고 있지만,'printer.QName '대신에'.FullName' 대신에'.Description'을 사용하여'GetPrintQueue'를 사용하는 것은 왜 이런 식인지 묻지는 않지만 작동하는 것처럼 보입니다. . – Peter

답변

1

좋아요. 어제 대부분이 문제를 해결하기 위해 노력했으며 오늘 아침에 드디어 해결책을 찾았습니다. 나는 여전히 1) UserPrintTicket이 GetPrintQueues와 GetPrintQueue 사이에 다르다는 것을 알지 못한다.하지만 내 프린터를 모두 나열하고 프린터의 HostingPrintServer에서 GetPrintQueue를 호출해야하는 각각의 올바른 UserPrintTicket을 얻는다. 즉, 다른 말로하면 :

 Dim printServer As New PrintServer() 

     For Each printer As PrintQueue In printServer.GetPrintQueues({EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections}) 
       'Get the parent PrintServer and uses it to get the PrintQueue, seems like overkill but that's the only way I found to get the correct UserPrintTicket  
       Dim currentPrinter As PrintQueue = printer.HostingPrintServer.GetPrintQueue(printer.Name) 
       ... 
     Next 

누군가를 돕는 희망!

관련 문제