gpt4 book ai didi

node.js - 如何在聚焦于另一个程序后打开 Electron 窗口时聚焦于它

转载 作者:太空宇宙 更新时间:2023-11-03 23:48:04 26 4
gpt4 key购买 nike

我正在创建一个 Electron 应用程序,当按下全局快捷键时,它应该显示自己。对于快捷键,我使用的是 ihook,该部分效果很好。如果我允许该窗口在应用程序启动期间正常显示,Windows 会将焦点放在该窗口上(我的测试是按 Alt 键查看哪个菜单栏被激活)。

问题是,如果我使用 visible: false 启动程序或尚未生成 Electron.BrowserWindow,然后调用 win.show() 或在按下快捷键时创建窗口,它会在前台打开窗口,但焦点仍位于按快捷键之前我所在的应用程序上。

我过去已经用 Autohotkey 修复了这个问题,但我想让这个应用程序跨平台,并且最好在 NodeJS 中包含尽可能多的代码。

最佳答案

事实证明,在窗口聚焦之前操作系统存在延迟。在 show() 之后立即调用 focus() 不会执行任何操作(或者在某些情况下,如果它赢得了竞争条件,则可能会执行任何操作)。使用 show 事件触发焦点可以解决这个问题。

win.on('show', () => { win.focus(); });
win.show();

编辑:操作系统级别上似乎仍然存在竞争条件,有时会导致窗口无法聚焦,因此我仍然必须添加超时:

win.on('show', () => {
setTimeout(() => {
win.focus();
}, 200);
});

关于node.js - 如何在聚焦于另一个程序后打开 Electron 窗口时聚焦于它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60296423/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com