5

我有一个用 Visual Basic 6 编写的小型实用程序应用程序,多年来一直在 XP 客户端上愉快地运行,直到最近一个使用 Windows 7 的客户端通知并告诉我行为不同。

当我的 VB 应用程序显示对话框时,它保持隐藏状态,直到用户在任务栏中单击它。

我更改了代码,而不是使用“.show vbModal”命令,而是改为以非模态方式显示表单,然后添加了各种 API 调用,如 BringWindowToFront 和 SetWindowPos 使其成为最重要的并调用 .focus 表单,尽管有这些额外的说明,但我能达到的最佳结果是使表单闪烁,提示用户单击它。

无论我尝试过什么,我都无法在没有用户干预的情况下将窗口显示在最上面,并且有焦点。

笔记。这是一个 ActiveX exe 项目,由 Win16 应用程序通过 COM 调用。

有没有其他人遇到过这种行为并知道解决方案?

任何建议/建议表示赞赏,谢谢。

4

1 回答 1

5

应用程序不能(不对 Windows 撒谎)窃取焦点。调用应用程序应该真正调用AllowSetForegroundWindow()(如果它在 win16 上可用)以允许 COM 进程窃取焦点,或调用SetForegroundWindow()自身。

SetForegroundWindow()有关设置焦点的条件,请参阅帮助。

于 2012-05-31T11:11:18.283 回答