【发布时间】:2016-07-07 09:21:49
【问题描述】:
我在调试特定打印机纸箱问题时遇到问题。我似乎在调试时 VB6 不会刷新/更新打印机信息。我已将其缩小为一段简单的代码。
Private Sub Form_Load()
Dim prt As Printer
For Each prt In Printers
AddOutput prt.DeviceName
AddOutput "Paperbin: " & prt.PaperBin
Next
End Sub
此代码循环遍历所有打印机并显示它们的名称和纸箱值。 AddOutput 过程将其添加到文本框。当我从 VB6 IDE 运行此代码时,所有打印机的纸箱值都相同。当我将此代码编译为可执行文件并运行它时,输出会显示正确的纸箱值。
我发现当我向prt 对象添加手表并折叠纸箱已正确更新的信息时。从那一刻起,VB6 IDE 为所有打印机使用该特定的纸箱值。
为什么 VB6 IDE 给出了错误的值,而编译的版本给出了正确的值?
我已经在 Windows 7 上测试了这段代码。
更新
按索引循环没有区别,因此使用For i = 0 to Printers.Count -1 与使用For each prt in Printers 有相同的问题。
其他属性也会受到影响。 PrintQuality、PaperSize 和 Duplex 等属性不会更新。属性 DeviceName 和 Port 正在正确更新。
【问题讨论】:
-
自从我处理VB6以来已经很长时间了,所以我可能帮不上什么忙,但你让我很好奇:打印机对象的其他属性是否会在何时更新?在 IDE 中运行?如果您按索引循环而不是使用 For Each,它的工作方式会有所不同吗?
-
是否正确更新
DeviceName? -
DeviceName正在正确更新。按索引循环没有区别。其他性质也受到影响。我没有测试所有这些,但PaperSize、Duplex和PrintQuality有同样的问题。 -
您运行的是哪个服务包级别?
标签: vb6