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

解决方案 »

  1.   

    没那么麻烦吧?用一个TIMER控件,每1秒钟判断打印是否已执行完,如果执行完就切纸,不就结了。我的确没见过能用程序控制切纸的打印机。兄弟你用的什么打印机?
      

  2.   

    检查打印队列中是否还有打印的任务(几个)
    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 
      

  3.   

    to fuanwei(草原上狂奔的蜗牛) 
         打印任务的问题都解决了,但现在的问题是如何避开检查打印任务所占用的时间。