gpt4 book ai didi

javascript - 如何从 "occupying"全局键盘快捷键中停止 Electron?

转载 作者:行者123 更新时间:2023-12-03 12:43:20 30 4
gpt4 key购买 nike

我正在构建一个小型音乐播放器。像任何其他播放器一样,即使应用程序没有焦点,您也可以使用键盘媒体键(上一曲、下一曲、播放、暂停)来控制它。

但是,当我注册这些快捷方式以便 Electron 可以监听它们时,其他应用程序无法使用它们。如果我的应用程序正在运行,例如。 G。当按下这些键中的任何一个时,Spotify 或 Window's Groove 不会做任何事情,因为我的应用程序已经占用了这些键。

我正在注册这样的快捷方式:

app.on('ready', () => {
globalShortcut.register('MediaPlayPause', () => {
window.webContents.send('shortcut', 'MediaPlayPause');
});

globalShortcut.register('MediaNextTrack', () => {
window.webContents.send('shortcut', 'MediaNextTrack');
});

globalShortcut.register('MediaPreviousTrack', () => {
window.webContents.send('shortcut', 'MediaPreviousTrack');
});
}
});

所以我的问题是: 是否可以在另一个应用程序请求它们时释放这些快捷方式?

如果是,是否可以在其他应用不再需要这些快捷方式时重新注册这些快捷方式? (假设其他应用程序将在不再需要时取消注册快捷方式)

最佳答案

恐怕如果不使用任何特定于操作系统的 native 东西,这在 Electron 之外是不可能的。理论上,您可以在相应的函数上应用一个系统范围的钩子(Hook)来注册快捷方式并解决这个问题。另一种选择是低级键盘钩子(Hook),因为这样您根本不必注册“官方”监听器。

除此之外,我不明白这怎么可能。引用 globalShortcut 文档:

This behavior is intended by operating systems, since they don't want applications to fight for global shortcuts.



以下是基于 Windows 系统的解决方案: https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legacy/ms644985(v%3Dvs.85)使用带有 WH_KEYBOARD_LL 标志的 SetWindowsHookEx。

因此,总而言之,您最好的选择是找到一种根本不使用 globalShortcut API 而是以特定于操作系统的方式实现您自己的监听器的方法(可能是低级键盘 Hook )。

关于javascript - 如何从 "occupying"全局键盘快捷键中停止 Electron?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57214887/

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