Функция EnumJobs

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

EnumJobs перечисляет задания, находящиеся в очереди печати.

hPrinter
Описатель принтера, полученный при помощи OpenPrinter или AddPrinter
FirstJob
Индекс задания, с которого начинается перечисление (индексация начинается с 0)
NoJobs
Максимальное число перечисляемых заданий
Level
Тип возвращаемой информации. Если 1, то данные в формате структуры JOB_INFO_1. Если 2, то в формате структуры JOB_INFO_2
pJob
Массив, получающий всю информацию о заданиях принтера
cdBuf
Размер массива pJob в байтах
pcbNeeded
Переменная, получающая число байт, успешно скопированных в массив pJob. Если функция потерпела неудачу, то переменная содержит необходимый минимальный размер
pcReturned
Переменная, получающая число заданий, возвращаемой функцией

Пример

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

Категория

Принтеры