如何检查打印队列中是否还有打印的任务
编号:QA003384
建立日期: 2000年10月10日 最后修改日期:2000年10月10日
所属类别:
chenxixian:
操作系统: win98
编程工具: VB5
问题: 在向打印机发送打印命令前,我想检查一下打印队列中是否还有打印的任务,如有则稍后再发,以免打印队列内的打印任务越来越多导致系统的崩溃,如何实现?
水平: 中级
回答:
下面是一个简单的例子:
Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, pDefault As Any) 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 Byte, ByVal cdBuf As Long, pcbNeeded As Long, pcReturned As Long) As Long
Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Private Sub Command1_Click()
Dim hPrinter As Long
Dim dwNeeded, dwReturned As Long
Dim b(1000) As Byte
If OpenPrinter("Canon Bubble-Jet BJ-10e", hPrinter, ByVal 0&) = 0 Then
Exit Sub
End If
EnumJobs hPrinter, 0, &HFFFFFFFF, 1, b(0), 1000, dwNeeded, _
dwReturned
MsgBox "有" & dwReturned & "个打印任务!"
ClosePrinter hPrinter
End Sub
更完整的例子可以参考微软的Knowledge Base的文章:“Q158828 OWTO: How To Call Win32 Spooler Enumeration APIs Properly”和微软的Knowledge Base的文章:“Q228769 OWTO: Retrieve Print Job Information”。
此问题由李海回答。
| |
|
|
| |
|
|