プリンタの印刷ジョブを取得(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