还是打印的问题.看似蛮简单的,可就不是咱整!狂晕......
在打印票据时,当打印机一开始打印票据我就开始判断打印任务是否结束,如果结束了就开始切纸,如果没有结束则继续打印。
但现在的问题就是:
打印机从开始打印到切纸的这个过程中不能执行其它的操作,总不可能就等着一直打完了再去录入其它的交易呀!!
可不可以打印队列返回的消息进行控制,如果是打完了,就开妈切纸?????或是把判断打印任务的过程做成一多线程的?
检查打印队列中是否还有打印的任务(几个)
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
照你的说法是在按下打印后不管,然后系统自己检查打印任务,而且可以自己同时进行其它的操作
这样的话就需要用到多线程了,但是在vb中使用多线程很占资源,而且特别不方便!
我没有使用过多线程,所以也不能帮助你了,你去网上搜索一下多线程的例子看看是否对你有帮助!