首页 > 解决方案 > SetForegroundWindow 并不完全像 Alt-Tab 一样工作(我不是想窃取焦点!)

问题描述

我想像 Alt-Tab 一样将输入焦点转移到应用程序。
这是一种SetForegroundWindow允许的情况(即我不是试图窃取焦点,触发器是另一个应用程序中的用户交互)。

特别是,如果应用程序被最小化,则应恢复该应用程序,进入前台,并将输入焦点提供给在用户切换之前之前保持输入焦点的窗口。

“激活”在应接收输入焦点的应用程序中实现。SetForegroundWindow(mainWindowOfMyApp)如果输入焦点位于主窗口的直接子窗口上,则有效。

但是,如果焦点位于非模态弹出窗口的子窗口上,则焦点不会返回到该窗口,但仍会返回到主窗口的子窗口。

我想问题在于,使用 SetForegroundWindow 我特意说将焦点设置到此窗口,而不是...设置到在您使用选项卡离开之前具有焦点的任何窗口

我想我可以在收到 时记住最后一个焦点窗口WM_ACTIVATEAPP (wParam==FALSE),并在重新激活时将焦点恢复到该窗口。这听起来不像是正确的方法,因为系统似乎已经这样做了,并且可能存在不充分或错误的情况。

有没有一种SetForegroundWindow表现得更像 Alt-TAB 的替代方法?

标签: windowswinapifocus

解决方案


推荐阅读