我有一个用Visual Basic 6编写的小型实用程序应用程序,它已经在XP客户端上运行了很多年,直到最近使用Windows 7的客户端通知并告诉我行为不同。
当我的VB应用程序显示该对话框时,它将一直隐藏,直到用户在任务栏中单击它为止。
我更改了代码而不是使用“.show vbModal”命令,我改为使用非模态显示表单,然后添加了各种API调用,如BringWindowToFront和SetWindowPos,使其成为最顶级的AND调用.focus on尽管有这些额外的说明,我可以实现的最佳结果是使表单闪烁提示用户点击它。
无论我尝试过什么,我都无法将窗口显示在最顶层,并且无需用户干预即可专注。
请注意。这是一个ActiveX exe项目,由Win16应用程序通过COM调用。
是否有其他人遇到此行为并知道解决方案?
任何建议/意见表示赞赏,谢谢。
答案 0 :(得分:5)
应用程序不能(不说谎)窃取焦点。调用应用程序应该真正调用AllowSetForegroundWindow()
(如果它在win16上可用)以允许COM进程窃取焦点,或者调用SetForegroundWindow()
本身。
有关设置焦点的条件,请参阅SetForegroundWindow()
的帮助。