对于每个设置了位的特性,该代码会在最终报告中添加一个将呈现给用户的通知 (下面将讨论在该代码末尾处调用的ReportAvailabilityAtThisTime方法)。
' Check for possible trouble states of a printer using the flags of the QueueStatus property Friend Shared Sub SpotTroubleUsingQueueAttributes(ByRef statusReport As String, ByVal pq As PrintQueue) If (pq.QueueStatus And PrintQueueStatus.PaperProblem) = PrintQueueStatus.PaperProblem Then statusReport = statusReport & "Has a paper problem. " End If If (pq.QueueStatus And PrintQueueStatus.NoToner) = PrintQueueStatus.NoToner Then statusReport = statusReport & "Is out of toner. " End If If (pq.QueueStatus And PrintQueueStatus.DoorOpen) = PrintQueueStatus.DoorOpen Then statusReport = statusReport & "Has an open door. " End If If (pq.QueueStatus And PrintQueueStatus.Error) = PrintQueueStatus.Error Then statusReport = statusReport & "Is in an error state. " End If If (pq.QueueStatus And PrintQueueStatus.NotAvailable) = PrintQueueStatus.NotAvailable Then statusReport = statusReport & "Is not available. " End If If (pq.QueueStatus And PrintQueueStatus.Offline) = PrintQueueStatus.Offline Then statusReport = statusReport & "Is off line. " End If If (pq.QueueStatus And PrintQueueStatus.OutOfMemory) = PrintQueueStatus.OutOfMemory Then statusReport = statusReport & "Is out of memory. " End If If (pq.QueueStatus And PrintQueueStatus.PaperOut) = PrintQueueStatus.PaperOut Then statusReport = statusReport & "Is out of paper. " End If If (pq.QueueStatus And PrintQueueStatus.OutputBinFull) = PrintQueueStatus.OutputBinFull Then statusReport = statusReport & "Has a full output bin. " End If If (pq.QueueStatus And PrintQueueStatus.PaperJam) = PrintQueueStatus.PaperJam Then statusReport = statusReport & "Has a paper jam. " End If If (pq.QueueStatus And PrintQueueStatus.Paused) = PrintQueueStatus.Paused Then statusReport = statusReport & "Is paused. " End If If (pq.QueueStatus And PrintQueueStatus.TonerLow) = PrintQueueStatus.TonerLow Then statusReport = statusReport & "Is low on toner. " End If If (pq.QueueStatus And PrintQueueStatus.UserIntervention) = PrintQueueStatus.UserIntervention Then statusReport = statusReport & "Needs user intervention. " End If ' Check if queue is even available at this time of day ' The method below is defined in the complete example. ReportAvailabilityAtThisTime(statusReport, pq) End Sub// Check for possible trouble states of a printer using the flags of the QueueStatus property internal static void SpotTroubleUsingQueueAttributes(ref String statusReport, PrintQueue pq) { if ((pq.QueueStatus & PrintQueueStatus.PaperProblem) == PrintQueueStatus.PaperProblem) { statusReport = statusReport + "Has a paper problem. "; } if ((pq.QueueStatus & PrintQueueStatus.NoToner) == PrintQueueStatus.NoToner) { statusReport = statusReport + "Is out of toner. "; } if ((pq.QueueStatus & PrintQueueStatus.DoorOpen) == PrintQueueStatus.DoorOpen) { statusReport = statusReport + "Has an open door. "; } if ((pq.QueueStatus & PrintQueueStatus.Error) == PrintQueueStatus.Error) { statusReport = statusReport + "Is in an error state. "; } if ((pq.QueueStatus & PrintQueueStatus.NotAvailable) == PrintQueueStatus.NotAvailable) { statusReport = statusReport + "Is not available. "; } if ((pq.QueueStatus & PrintQueueStatus.Offline) == PrintQueueStatus.Offline) { statusReport = statusReport + "Is off line. "; } if ((pq.QueueStatus & PrintQueueStatus.OutOfMemory) == PrintQueueStatus.OutOfMemory) { statusReport = statusReport + "Is out of memory. "; } if ((pq.QueueStatus & PrintQueueStatus.PaperOut) == PrintQueueStatus.PaperOut) { statusReport = statusReport + "Is out of paper. "; } if ((pq.QueueStatus & PrintQueueStatus.OutputBinFull) == PrintQueueStatus.OutputBinFull) { statusReport = statusReport + "Has a full output bin. "; } if ((pq.QueueStatus & PrintQueueStatus.PaperJam) == PrintQueueStatus.PaperJam) { statusReport = statusReport + "Has a paper jam. "; } if ((pq.QueueStatus & PrintQueueStatus.Paused) == PrintQueueStatus.Paused) { statusReport = statusReport + "Is paused. "; } if ((pq.QueueStatus & PrintQueueStatus.TonerLow) == PrintQueueStatus.TonerLow) { statusReport = statusReport + "Is low on toner. "; } if ((pq.QueueStatus & PrintQueueStatus.UserIntervention) == PrintQueueStatus.UserIntervention) { statusReport = statusReport + "Needs user intervention. "; } // Check if queue is even available at this time of day // The method below is defined in the complete example. ReportAvailabilityAtThisTime(ref statusReport, pq); }