C++ WinApi:在新线程中将键盘焦点赋予新窗口
我有一个dll,当用户按下网页上的按钮时,浏览器插件会调用它。此dll包含创建窗口(在新UI线程中)的本机代码,我需要此窗口以获得键盘对其创建的关注(用户预期的行为)。我并不是想把一个不需要的弹出窗口推到用户的脸上 我尝试过使用SetForegroundWindow()、SetFocus()、BringWindowToTop()、AttachThreadInput()、最小化/恢复窗口,你可以说,我已经尝试过了。我取得的最大进步是让新窗口在任务栏中闪烁 我之所以需要这样做,是因为我需要考虑键盘的可访问性,并允许用户使用我的新窗口,而无需对其使用alt tab键C++ WinApi:在新线程中将键盘焦点赋予新窗口,c++,winapi,keyboard,focus,accessibility,C++,Winapi,Keyboard,Focus,Accessibility,我有一个dll,当用户按下网页上的按钮时,浏览器插件会调用它。此dll包含创建窗口(在新UI线程中)的本机代码,我需要此窗口以获得键盘对其创建的关注(用户预期的行为)。我并不是想把一个不需要的弹出窗口推到用户的脸上 我尝试过使用SetForegroundWindow()、SetFocus()、BringWindowToTop()、AttachThreadInput()、最小化/恢复窗口,你可以说,我已经尝试过了。我取得的最大进步是让新窗口在任务栏中闪烁 我之所以需要这样做,是因为我需要考虑键盘的
是否有人对如何在此处获得键盘焦点有任何建议?如果任务栏上的窗口正在闪烁,则您的代码不符合下列要求: 只有满足以下条件之一时,进程才能设置前景窗口 条件是正确的: 这个过程就是前景过程 该进程由前台进程启动 进程接收到最后一个输入事件 没有前台进程 正在调试前台进程 前景未锁定(请参见LockSetForegroundWindow) 前台锁定超时已过期(请参阅SystemParametersInfo中的SPI_GETFOREGROUNDLOCKTIMEOUT) 没有激活的菜单 应用程序无法将窗口强制置于前台 当用户使用另一个窗口时。取而代之的是Windows 闪烁窗口的任务栏按钮以通知用户。
可能与IE作为一个低完整性进程运行的事实有关。