' Check for possible trouble states of a printer using its properties Friend Shared Sub SpotTroubleUsingProperties(ByRef statusReport As String, ByVal pq As PrintQueue) If pq.HasPaperProblem Then statusReport = statusReport & "Has a paper problem. " End If If Not(pq.HasToner) Then statusReport = statusReport & "Is out of toner. " End If If pq.IsDoorOpened Then statusReport = statusReport & "Has an open door. " End If If pq.IsInError Then statusReport = statusReport & "Is in an error state. " End If If pq.IsNotAvailable Then statusReport = statusReport & "Is not available. " End If If pq.IsOffline Then statusReport = statusReport & "Is off line. " End If If pq.IsOutOfMemory Then statusReport = statusReport & "Is out of memory. " End If If pq.IsOutOfPaper Then statusReport = statusReport & "Is out of paper. " End If If pq.IsOutputBinFull Then statusReport = statusReport & "Has a full output bin. " End If If pq.IsPaperJammed Then statusReport = statusReport & "Has a paper jam. " End If If pq.IsPaused Then statusReport = statusReport & "Is paused. " End If If pq.IsTonerLow Then statusReport = statusReport & "Is low on toner. " End If If pq.NeedUserIntervention Then statusReport = statusReport & "Needs user intervention. " End If ' Check if queue is even available at this time of day ' The following method is defined in the complete example. ReportAvailabilityAtThisTime(statusReport, pq) End Sub 'end SpotTroubleUsingProperties// Check for possible trouble states of a printer using its properties internal static void SpotTroubleUsingProperties(ref String statusReport, PrintQueue pq) { if (pq.HasPaperProblem) { statusReport = statusReport + "Has a paper problem. "; } if (!(pq.HasToner)) { statusReport = statusReport + "Is out of toner. "; } if (pq.IsDoorOpened) { statusReport = statusReport + "Has an open door. "; } if (pq.IsInError) { statusReport = statusReport + "Is in an error state. "; } if (pq.IsNotAvailable) { statusReport = statusReport + "Is not available. "; } if (pq.IsOffline) { statusReport = statusReport + "Is off line. "; } if (pq.IsOutOfMemory) { statusReport = statusReport + "Is out of memory. "; } if (pq.IsOutOfPaper) { statusReport = statusReport + "Is out of paper. "; } if (pq.IsOutputBinFull) { statusReport = statusReport + "Has a full output bin. "; } if (pq.IsPaperJammed) { statusReport = statusReport + "Has a paper jam. "; } if (pq.IsPaused) { statusReport = statusReport + "Is paused. "; } if (pq.IsTonerLow) { statusReport = statusReport + "Is low on toner. "; } if (pq.NeedUserIntervention) { statusReport = statusReport + "Needs user intervention. "; } // Check if queue is even available at this time of day // The following method is defined in the complete example. ReportAvailabilityAtThisTime(ref statusReport, pq); }//end SpotTroubleUsingPropertiesinternal: // Check for possible trouble states of a printer using its properties static void SpotTroubleUsingProperties (System::String^% statusReport, System::Printing::PrintQueue^ pq) { if (pq->HasPaperProblem) { statusReport = statusReport + "Has a paper problem. "; } if (!(pq->HasToner)) { statusReport = statusReport + "Is out of toner. "; } if (pq->IsDoorOpened) { statusReport = statusReport + "Has an open door. "; } if (pq->IsInError) { statusReport = statusReport + "Is in an error state. "; } if (pq->IsNotAvailable) { statusReport = statusReport + "Is not available. "; } if (pq->IsOffline) { statusReport = statusReport + "Is off line. "; } if (pq->IsOutOfMemory) { statusReport = statusReport + "Is out of memory. "; } if (pq->IsOutOfPaper) { statusReport = statusReport + "Is out of paper. "; } if (pq->IsOutputBinFull) { statusReport = statusReport + "Has a full output bin. "; } if (pq->IsPaperJammed) { statusReport = statusReport + "Has a paper jam. "; } if (pq->IsPaused) { statusReport = statusReport + "Is paused. "; } if (pq->IsTonerLow) { statusReport = statusReport + "Is low on toner. "; } if (pq->NeedUserIntervention) { statusReport = statusReport + "Needs user intervention. "; } // Check if queue is even available at this time of day // The following method is defined in the complete example. ReportAvailabilityAtThisTime(statusReport, pq); };
创建ReportAvailabilityAtThisTime方法的目的在于让您确定队列在当前时间是否可用。
如果StartTimeOfDay 属性和UntilTimeOfDay 属性相等,该方法将不执行任何操作;因为在这种情况下,打印机将一直可用。 如果这两个属性不同,则该方法将获取当前时间,当前时间随后将必须转换为自午夜以来的总分钟数,因为StartTimeOfDay 属性和UntilTimeOfDay 属性是表示自午夜以来的总分钟数的Int32 值,而不是DateTime 对象。 最后,该方法将查看当前的时间是否介于开始时间和截止时间之间。
Private Shared Sub ReportAvailabilityAtThisTime(ByRef statusReport As String, ByVal pq As PrintQueue) If pq.StartTimeOfDay