Vb6 调试时未刷新打印机信息
我在调试一个特定的打印机纸盒问题时遇到问题。调试时,VB6似乎不刷新/更新打印机信息。我已经把它缩小为一段简单的代码Vb6 调试时未刷新打印机信息,vb6,Vb6,我在调试一个特定的打印机纸盒问题时遇到问题。调试时,VB6似乎不刷新/更新打印机信息。我已经把它缩小为一段简单的代码 Private Sub Form_Load() Dim prt As Printer For Each prt In Printers AddOutput prt.DeviceName AddOutput "Paperbin: " & prt.PaperBin Next End Sub 该代码在所有打印机中循环,
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给出了错误的值,而编译版本给出了正确的值
我已经在Windows7上测试了这段代码
更新
按索引循环没有区别,因此对打印机使用i=0的。计数-1与对打印机中的每个prt使用有相同的问题
其他财产也受到影响。像PrintQuality
、PaperSize
和Duplex
这样的属性不会更新。属性DeviceName
和Port
正在正确更新。虽然很少会偶然发现类似于平台错误的东西,但在这种情况下似乎是这样。我建议安装最新的service pack(适用于VB6)以确保您有最新的错误修复。我怀疑(尽管这只是一个猜测)它之所以在编译时能工作,但在IDE中却不能工作,是因为在编译时它使用了新版本的Windows(包括当前的service Pack)中内置的VB6运行时,但在IDE中它使用了IDE的运行时(您已经指出,该运行时尚未修补).我已经很久没有处理VB6了,所以我可能帮不了什么忙,但你让我好奇:在IDE中运行时,Printer对象的其他属性会更新吗?如果按索引循环而不是使用For Each,其工作方式是否不同?是否正确更新了DeviceName
?是否正确更新了DeviceName
。按索引循环没有什么区别。其他属性也会受到影响。我还没有测试所有这些,但是纸张大小
,双面打印
和打印质量
都有相同的问题。您正在运行哪个service pack级别?很好@Peter。链接在这里