在打印票据时,当打印机一开始打印票据我就开始判断打印任务是否结束,如果结束了就开始切纸,如果没有结束则继续打印。
但现在的问题就是:
打印机从开始打印到切纸的这个过程中不能执行其它的操作,总不可能就等着一直打完了再去录入其它的交易呀!!!!
可不可以打印队列返回的消息进行控制,如果是打完了,就开妈切纸?????或是把判断打印任务的过程做成一多线程的?
但现在的问题就是:
打印机从开始打印到切纸的这个过程中不能执行其它的操作,总不可能就等着一直打完了再去录入其它的交易呀!!!!
可不可以打印队列返回的消息进行控制,如果是打完了,就开妈切纸?????或是把判断打印任务的过程做成一多线程的?
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
打印任务的问题都解决了,但现在的问题是如何避开检查打印任务所占用的时间。