怎样取得打印机的当前打印作业数目
即是还有几份打印作业未打印
用什么API啊?

解决方案 »

  1.   

    试试下面的(我没试过):Public Type PRINTER_INFO_2
            pServerName As String
            pPrinterName As String
            pShareName As String
            pPortName As String
            pDriverName As String
            pComment As String
            pLocation As String
            pDevMode As DEVMODE
            pSepFile As String
            pPrintProcessor As String
            pDatatype As String
            pParameters As String
            pSecurityDescriptor As SECURITY_DESCRIPTOR
            Attributes As Long
            Priority As Long
            DefaultPriority As Long
            StartTime As Long
            UntilTime As Long
            Status As Long
            cJobs As Long
            AveragePPM As Long
    End Type'上面的cjobs意思好象是作业数吧'用的api:Public Declare Function GetPrinter Lib "winspool.drv" Alias "GetPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, pPrinter As Any, ByVal cbBuf As Long, pcbNeeded As Long) As Long'重要参数说明:pPrinter -------  Any,包含PRINTER_INFO_x结构的缓冲区。x代表级别
      

  2.   

    Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, pDefault As Any) As Long
    Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
    Private Declare Function EnumJobs Lib "winspool.drv" Alias "EnumJobsA" (ByVal hPrinter As Long, ByVal FirstJob As Long, ByVal NoJobs As Long, ByVal Level As Long, pJob As Any, ByVal cdBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
    Private Sub Form_Load()    Dim hPrinter As Long, lNeeded As Long, lReturned As Long
        Dim lJobCount As Long
        OpenPrinter Printer.DeviceName, hPrinter, ByVal 0&
        EnumJobs hPrinter, 0, 99, 1, ByVal 0&, 0, lNeeded, lReturned
        If lNeeded > 0 Then
            ReDim byteJobsBuffer(lNeeded - 1) As Byte
            EnumJobs hPrinter, 0, 99, 1, byteJobsBuffer(0), lNeeded, lNeeded, lReturned
            If lReturned > 0 Then
                lJobCount = lReturned
            Else
                lJobCount = 0
            End If
        Else
            lJobCount = 0
        End If
        ClosePrinter hPrinter
        MsgBox "Jobs in printer queue: " + CStr(lJobCount), vbInformation
    End Sub