只有基本的 VB6 应用程序在 WIN8 上运行吗?是否有任何 API 在使用中有所不同,例如 GDI+、Keyhooks、FileSystem 或 RtlMoveMemory API。
VB6 是 x86,Win8 是 x64。
我已经阅读: VB6 在 Windows 8 上运行?
只有基本的 VB6 应用程序在 WIN8 上运行吗?是否有任何 API 在使用中有所不同,例如 GDI+、Keyhooks、FileSystem 或 RtlMoveMemory API。
VB6 是 x86,Win8 是 x64。
我已经阅读: VB6 在 Windows 8 上运行?
Windows 8 不会更改 Windows 桌面应用程序的基本 API。(当然 Windows RT 除外)
未来版本的 Windows 也不会;对这些 API 的任何更改都会破坏与所有现有应用程序的兼容性。
我们刚刚开始在 Windows 8 x64 上测试我们的 VB6 应用程序。该应用程序庞大而复杂。一切似乎都可以正常工作,甚至是较旧的第三方 OCX 控件等。ADO/MDAC 可以很好地与各种版本的 SQL Server 配合使用。有很多 Win32 API 调用似乎也可以正常工作。我们还能够在 Windows 8 x64 上安装 VB6 IDE 以进行测试和调试。
然而,第一个问题是一个通用的 50003 错误和一条消息,说它无法创建主应用程序表单或类似的东西。进一步调查显示,出于某种原因,Windows 8 不喜欢某些嵌入在表单中的图标(它们存储在表单随附的 .frx 文件中,并在编译时嵌入到 .exe 中)。看来它可能与具有透明背景的图标有关。
该应用程序有大约。100 个受影响的表格。解决此问题后,该应用程序似乎可以正常工作。但这件事破坏了我们在 Windows 7 上运行良好的分发可执行文件(以及 Vista 和 XP 以及所有服务器版本,以及在 2000、Win98 和 Win95 上运行的旧版本)。它可以很容易地修复,但我们希望不必做任何事情。叹。
如果其他人看到这个或有任何提示或建议,我会很感兴趣。
PS @Hans Passant,Windows 7 SP1 ADO 问题已通过 KB2640696 修复。
保持旧的 VB6 程序运行肯定越来越难。Windows 7 SP1 部署了对 ADO 的过期更新,这将阻止旧的 VB6 dbase 应用程序工作。今年有两个针对 MSCOMCTL.OCX 的关键安全补丁,其中一个更改了 guid。
虽然您可以通过跳过这些更新来让旧机器运行旧的 VB6 应用程序,但 Windows 8 将让它们就位并且您无法恢复。您必须在具有这些更新的机器上重建您的应用程序,以便它使用新的类型库。如果这不是一个选项,那么虚拟机就是让它继续运行的方法。但是,我还没有看到对 Virtual XP Mode 的支持。