热情软件屋

 

如何检查打印队列中是否还有打印的任务


编号: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”

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio