プリンタの印刷ジョブを取得(T)          <TOP>


プリンタの印刷ジョブを列挙します。

OpenPrinter プリンタオブジェクトをオープン

ClosePrinter プリンタオブジェクトを閉じる

EnumJobs プリンタの印刷ジョブを列挙

 
例では、デフォルトプリンタ名「FinePrint5」を直接指定しています。
確認の為、「FinePrint5」をダブルクリック
3個のドキュメントが保留
 
'================================================================
'= プリンタの印刷ジョブを列挙
'=    (EnumJobs.bas)
'================================================================

' プリンタオブジェクトをオープン
Declare Function Api_OpenPrinter& Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName$, phPrinter&, pDefault As Any)

' プリンタオブジェクトを閉じる
Declare Function Api_ClosePrinter& Lib "winspool.drv" Alias "ClosePrinter" (ByVal hPrinter&)

' プリンタの印刷ジョブを列挙
Declare Function Api_EnumJobs& Lib "winspool.drv" Alias "EnumJobsA" (ByVal hPrinter&, ByVal FirstJob&, ByVal NoJobs&, ByVal Level&, pJob As Any, ByVal cdBuf&, pcblNeeded&, pcReturned&)

Var hPrinter As Long
Var lNeeded As Long
Var lReturned As Long
Var lJobCount As Long
Var Ret As Long

Ret = Api_OpenPrinter("FinePrint5", hPrinter, ByVal 0)
Ret = Api_EnumJobs(hPrinter, 0, 99, 1, ByVal 0, 0, lNeeded, lReturned)
If lNeeded > 0 Then
    dim JobsBuffer(lNeeded - 1) As byte
    Ret = Api_EnumJobs(hPrinter, 0, 99, 1, JobsBuffer(0), lNeeded, lNeeded, lReturned)
    If lReturned > 0 Then
        lJobCount = lReturned
    Else
        lJobCount = 0
    End If
Else
    lJobCount = 0
End If

Ret = Api_ClosePrinter(hPrinter)
Print "キューに" + Str$(lJobCount) & "個のドキュメントがあります!"

Stop
End