首页 > 解决方案 > 打印完成然后在 VB.NET 中更改默认打印机

问题描述

我有问题,也许有人可以帮助我。

我正在尝试使用 printdocument 类打印文档。这有效,它正在打印 2 个文档。打印机完成打印后,我必须将另一个文档(网站)打印到另一台打印机。我认为没有办法同时打印它。所以我正在做的是:将默认打印机设置为打印机 1。然后我必须等到两个(不同)文档都完成。然后将默认打印机更改为 2。发送命令并在打印机 2 上打印。

这是我目前的代码:

 <DllImport("winspool.drv", CharSet:=CharSet.Auto, SetLastError:=True)>
    Public Shared Function SetDefaultPrinter(name As String) As Boolean
    End Function

'set default printer1
PrintDocument_BO.PrinterSettings.PrinterName = Printer1

  Dim jobnumbernotnull = False
'wait for jobs
  While Not jobnumbernotnull
          pq.Refresh()
          jobnumbernotnull = pq.NumberOfJobs > 0
  End While



 Dim jobs = pq.GetPrintJobInfoCollection()
'wait till all jobs are completed
    For Each job In jobs
       Dim done = False

          While Not done

            pq.Refresh()
            job.Refresh()
            done = job.IsCompleted OrElse job.IsDeleted OrElse job.IsPrinted

          End While
     Next

'set default printer2
 SetDefaultPrinter(Printer2)
 DefaultPrinter = "Printer2"

但是当我运行它时:Printer1 是默认的,并且正在打印一个文档。它不会等到文档完成,只是将printer2设置为默认值,然后切换回printer1并在printer1上打印所有内容。

所以我的问题是:是否可以将打印文档打印到 1 台打印机并同时在打印机 2 上打印网站?

而且,我怎样才能等待第一台打印机完全完成打印,以便我可以切换默认打印机?我也尝试过使用打印机 Jobstatus 但似乎没有任何效果。谢谢!

标签: vb.netprintingwaitjobs

解决方案


推荐阅读