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 该代码在所有打印机中循环,

我在调试一个特定的打印机纸盒问题时遇到问题。调试时,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给出了错误的值,而编译版本给出了正确的值

我已经在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。链接在这里