vb.net - 打印完成然后在 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 但似乎没有任何效果。谢谢!
解决方案
推荐阅读
- sql - SQL查询(如果列包含某个值将其移动到另一列)
- windows - Docker 构建 - 无法计算缓存键:“/srv/app/www”未找到:未找到
- asp.net-mvc - WAF 仅针对一条记录阻止 JavaScript 文件
- selenium - Pythonanywhere | 硒铬
- c++ - 与数组的最后一个元素进行比较的是什么?
- dji-sdk - 与 Mavic 2 Enterprise 的 SDK 连接
- laravel - Laravel 8 - 队列作业超时,通过清除缓存和重新启动 Horizon 修复
- pyomo - 模型约束不保存到文件的 Display() 方法
- jquery - 使用 Laravel8 从 public_path 下载具有原始名称的单词 focument
- python - 如何使用python pandas在一列的每一行中创建一个包含项目长度的算术表达式