无法聚焦电子应用程序(在Windows上)



希望这是一个简单的问题:我正在制作一个定时器风格的应用程序,我希望该应用程序在定时器结束时重新获得焦点。当计时器结束时,应用程序成功地弹出,我甚至可以在第一个文本框中看到一个闪烁的光标,但当我键入一些内容时,它仍然会转到它后面的应用程序。我尝试了电子文档中的所有方法(如下所列(,但都不起作用。是我错过了另一条路,还是这根本不可能?

Object.values(windows).forEach((window) => { // windows here stores all the application's BrowserWindows
window.focus();
window.focusOnWebView();
window.webContents.focus();
});
app.focus({ steal: true });

谢谢!

我也尝试了所有记录的方法,但没有什么真正有效的方法(至少在Windows 10中(。

为了让应用程序处于领先地位,我必须像这样切换AlwaysOnTop(渲染器进程(:

let currentWindow = window.require("electron").remote.getCurrentWindow();
currentWindow.setAlwaysOnTop(true);
currentWindow.setAlwaysOnTop(false);

但不幸的是,这对关注应用程序没有帮助。

人们说BrowserWindow::restore()功能正确地将焦点设置回应用程序。所以你可能会做这样的事情(尽管看起来很糟糕(:

currentWindow.minimize();
currentWindow.restore();

有趣的是,我在另一个C++项目中也遇到了类似的问题,所以可能是与操作系统有关。为了解决C++项目中的问题,我必须在激活窗口后调用SetForegroundWindow函数。由于ElectronJSBrowserWindow有一个返回WindowsHWND句柄的getNativeWindowHandle函数,如果没有其他功能,也许您可以使用它。

祝你好运!

最新更新