高手
我想通过EnumJobs 来获取打印机当前的打印任务数
 result = OpenPrinter(printername, PrinterHandle, pd)
 result=EnumJobs(PrinterHandle, 0, 127, 1, job(0), 0, jobByteNum, GetJobsNum)
   GetJobsNum  返回 怎么老是0 
   不知道这样调用,是否有错误,   请指点
    

解决方案 »

  1.   

    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()
        'KPD-Team 2001
        'URL: http://www.allapi.net/
        'E-Mail: [email protected]
        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  
      

  2.   

    谢谢了,但我想问一下。
     EnumJobs hPrinter, 0, 99, 1, ByVal 0&, 0, lNeeded, lReturned
     中语参数:ByVal 0&, 是表示什么意思呢
      

  3.   

    //ByVal 0&, 是表示什么意思呢这是表示没有使用 pJob(也没有为它分配缓冲区),否则的话要为它分配一个包含 JOB_INFO_1 或 JOB_INFO_2 结构的缓冲区