gpt4 book ai didi

macos - 在 MacOS 上使用 Cmd+tab 激活 Electron 应用程序

转载 作者:行者123 更新时间:2023-12-03 12:23:38 24 4
gpt4 key购买 nike

在 MacOS 上的 Electron 应用程序中,如果使用 activate 单击 Dock 中的图标,我可以让应用程序显示主窗口事件:

app.on('activate', () => {

log.info('activate')
win.show()
})

当用户使用 时,我需要使用哪个事件来显示主窗口Cmd+tab 激活应用程序? activate事件没有被触发。我正在寻找的行为就像使用 的 GitHub 桌面。 Cmd+tab 选择应用程序将打开主窗口,如果它不可见。

最佳答案

查看 GitHub Desktop 示例,他们似乎通过劫持 BrowserWindow 的 close 来自定义此行为。事件。

app/src/main-process/app-window.ts :

    if (__DARWIN__) {
this.window.on('close', e => {
if (!quitting) {
e.preventDefault()
Menu.sendActionToFirstResponder('hide:')
}
})
}

阻止窗口关闭后, Menu.sendActionToFirstResponder('hide:')将隐藏整个应用程序,而不是对窗口本身做任何事情。现在,进入应用程序(就像在 macOS 上使用 ⌘+H 隐藏的任何应用程序一样)现在将显示它。

请注意,您可能应该添加处理程序以确保应用程序在您尝试实际退出时也关闭。从 GitHub Desktop repo 上的同一个文件(不确定是什么触发了 IPC 事件,但只是做 before-quit 开始工作正常):

    let quitting = false
app.on('before-quit', () => {
quitting = true
})

ipcMain.on('will-quit', (event: Electron.IpcMainEvent) => {
quitting = true
event.returnValue = true
})

minimal reproduction Gist可用 Electron Fiddle 打开.

关于macos - 在 MacOS 上使用 Cmd+tab 激活 Electron 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60924701/

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