【问题标题】:Printers info not refreshing while debugging调试时打印机信息不刷新
【发布时间】: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 有相同的问题。

其他属性也会受到影响。 PrintQualityPaperSizeDuplex 等属性不会更新。属性 DeviceNamePort 正在正确更新。

【问题讨论】:

  • 自从我处理VB6以来已经很长时间了,所以我可能帮不上什么忙,但你让我很好奇:打印机对象的其他属性是否会在何时更新?在 IDE 中运行?如果您按索引循环而不是使用 For Each,它的工作方式会有所不同吗?
  • 是否正确更新DeviceName
  • DeviceName 正在正确更新。按索引循环没有区别。其他性质也受到影响。我没有测试所有这些,但PaperSizeDuplexPrintQuality 有同样的问题。
  • 您运行的是哪个服务包级别?
  • 好点@彼得。链接在这里microsoft.com/en-us/download/details.aspx?id=9183

标签: vb6


【解决方案1】:

虽然很少会偶然发现看起来像平台错误的东西,但在这种情况下它似乎是一个。我建议安装最新的服务包(对于 VB6 是 Service Pack 6),以确保您拥有最新的错误修复。我怀疑(尽管这只是一个猜测)它在编译时工作但在 IDE 中不起作用的原因是,在编译时它使用了内置于较新版本的 Windows(包括当前的服务包)的 VB6 运行时,但在IDE 它使用了 IDE 的运行时(您已指出尚未修补)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多