【问题标题】:Unable to focus electron app (on Windows)无法聚焦电子应用程序(在 Windows 上)
【发布时间】:2021-06-30 22:39:37
【问题描述】:

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

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 electron focus


    【解决方案1】:

    我也尝试了所有记录在案的方法,但没有任何效果(至少在 Windows 10 中)。

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

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

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

    People say BrowserWindow::restore() 函数正确地将焦点设置回应用程序。所以你可能会做这样的事情(虽然它看起来很糟糕):

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

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

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2021-06-21
      • 2018-08-14
      • 2022-11-01
      • 1970-01-01
      • 2015-05-16
      • 2015-11-05
      • 1970-01-01
      • 2021-07-08
      • 2018-02-20
      相关资源
      最近更新 更多