3

我在通过 Windows Restart Manager关闭 VB6 应用程序时遇到问题。这在 Inno 设置中使用新的重新启动管理器支持时非常明显,甚至在编译空的 VB6 项目时也会发生。

当我将日志记录添加到QueryUnloadandUnload事件时,我看到以下序列:

QueryUnload(vbAppWindows)
Unload()
QueryUnload(vbAppTaskManager)

此后,VB6 进程似乎锁定在 VB6 运行时内部,调用 Restart Manager 的进程最终超时并放弃。

之前已经报告了类似的问题,但没有合理的解决方案。

4

1 回答 1

6

2007 年在Windows 应用程序兼容性论坛上对此进行了讨论。

QueryUnload建议的解决方案是将其添加到主窗体的事件处理程序的末尾:

'For Vista Certification requirement.
'Handles TEST CASE 30. Verify the application is Restart Manager Aware.
If UnloadMode = vbAppWindows Then Unload Me

似乎 VB6 运行时没有正确处理关闭消息之一,因此重新启动管理器随后发送更强制关闭消息,导致运行时锁定。

我已经用一个相当复杂的多进程 VB6 应用程序确认了此修复程序,并且它全部正确关闭,没有明显的不良影响。

于 2012-06-25T14:28:45.263 回答