0

我目前正在开发一个类似于聚光灯搜索的应用程序。其中一项功能是能够使用键盘快捷键(在本例中为 ctrl + D)调用搜索栏。我正在使用 electron.js 来创建它。为了创建全局快捷方式,我使用了以下内容:

  app.whenReady().then(() => {
    globalShortcut.register('CommandOrControl+D', () => {
      if (mainWindow.isVisible() == false) {
        mainWindow.show();
        console.log("\nctrl + D was pressed\nmainWindow focused");
      } else if (mainWindow.isVisible() == true) {
        mainWindow.blur();
        mainWindow.hide();
        console.log("\nctrl + D was pressed\nmainWindow not focused")
      }
    })
  })

在测试期间(使用electron-forge),我会输入命令electron-forge start来临时运行程序,它运行良好,但是在运行electron-forge make并运行exe文件后,快捷方式不再用于隐藏/模糊窗口,但它确实有效召唤窗户。

我尝试将 ctrl + D 命令更改为 ctrl + X (由电子推荐)和其他几个命令并重新制作项目以确保快捷方式未被使用,但没有运气。我也从 isFocused 而不是 isVisible 开始,即使在测试中也不起作用。

注意:我使用的是 Windows 10,有时在使用电子时,它的运行方式与 Mac 不同,尽管它在这个问题上确实不应该有所作为。

4

1 回答 1

0

这是一个非常奇怪的故障,但我设法让它工作。Electron Forge 没有任何问题。事实证明,isVisible它的输出不是很可靠,因此通过将其替换为isFocused,它可以完美运行。这也意味着mainWindow.hide()可以删除。

我还发现 Windows 本身或其他程序使用的许多快捷方式可能会影响结果(非常明显但仍然需要注意),并且超级键(Windows 键)由于主要用于系统级程序而不起作用。

于 2020-07-19T20:02:55.733 回答