【发布时间】:2012-06-05 14:48:40
【问题描述】:
我有一个用 Visual Basic 6 编写的小型实用程序应用程序,多年来一直在 XP 客户端上愉快地运行,直到最近一个使用 Windows 7 的客户端通知我,并告诉我行为不同。
当我的 VB 应用程序显示对话框时,它保持隐藏状态,直到用户在任务栏中单击它。
我更改了代码,而不是使用“.show vbModal”命令,而是改为以非模态方式显示表单,然后添加了各种 API 调用,如 BringWindowToFront 和 SetWindowPos 以使其成为最重要的并调用 .focus on表单,尽管有这些额外的说明,但我能达到的最佳结果是让表单闪烁,提示用户单击它。
无论我尝试过什么,我都无法在没有用户干预的情况下使窗口显示在最顶部,并且具有焦点。
注意。这是一个 ActiveX exe 项目,正在由 Win16 应用程序通过 COM 调用。
有没有其他人遇到过这种行为并知道解决方案?
任何建议/建议表示赞赏,谢谢。
【问题讨论】:
-
为什么是 -1 ?这个问题有什么不清楚的地方?
-
请记住,16 位应用程序无法在 64 位 Windows 上运行,因此您可能希望尽快更新它。
-
但是您仍然可以在 32 位 VM 中运行它们。我相信“XP 模式”是 32 位 XP SP3。
-
啊,可能我从来不用运行 XP 模式。不过,这还不足以成为继续运行 16 位代码的充分理由 :)
-
我假设如果移植 16 位代码是一个简单的解决方案,那么现在就可以完成了。我不认为 XP Mode 是一个“解决方案”,只是一个“做得到”的答案。