首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法聚焦电子应用程序(在Windows上)

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

Stack Overflow用户
提问于 2021-04-05 07:29:57
回答 1查看 184关注 0票数 0

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

代码语言:javascript
运行
复制
Object.values(windows).forEach((window) => { // windows here stores all the application's BrowserWindows
  window.focus();
  window.focusOnWebView();
  window.webContents.focus();
});
app.focus({ steal: true });

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-04-05 21:22:14

我也尝试了所有有文档记录的方法,但都没有真正有效(至少在Windows10中)。

要将应用程序置于顶部,我必须像这样切换AlwaysOnTop (渲染器进程):

代码语言:javascript
运行
复制
let currentWindow = window.require("electron").remote.getCurrentWindow();
currentWindow.setAlwaysOnTop(true);
currentWindow.setAlwaysOnTop(false);

但不幸的是,它对应用程序的焦点没有帮助。

People say BrowserWindow::restore()函数正确地将焦点重新设置到应用程序上。因此,您可能会这样做(尽管它看起来很可怕):

代码语言:javascript
运行
复制
currentWindow.minimize();
currentWindow.restore();

有趣的是,我在另一个C++项目中遇到了类似的问题,所以可能是与操作系统相关的问题。为了解决C++项目中的问题,我必须在激活窗口后调用SetForegroundWindow函数。由于ElectronJS BrowserWindow有一个返回Windows HWND句柄的getNativeWindowHandle函数,如果其他方法都不起作用,也许你可以利用这个函数。

祝好运!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66946739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档