【发布时间】:2020-07-16 13:29:38
【问题描述】:
我正在构建我的第一个电子项目,但我遇到了托盘图标重复的问题。这是向您展示图片中发生的事情:
我想指出我正在测试该应用程序。经常启动和停止它。并且图标最终会减少到一个(Windows 10 垃圾收集?)。但是我仍然相信这是不正常的行为。
应用程序本身允许用户打开新窗口来监控事物。由于我不喜欢电子中“附加”窗口最小化的位置,因此我将它们设置为在最小化时“隐藏”。其想法是,当用户想要再次显示该窗口时,他们可以在右键单击系统托盘中的应用程序图标并选择所需的窗口名称时从列表中选择它。
我认为这个问题可能与我在更新托盘图标时创建和销毁托盘图标的方式有关。我所做的是销毁托盘,然后在将新窗口名称附加到模板数组后再次构建它(如下面的代码所示)。
这样做是个好主意吗? - 我没有看到很多如何做到这一点的例子,所以我自己做了。
如果您需要更多信息,请随时在下方发表评论。谢谢!
相关代码:(在main.js中)
const iconPath = path.join(__dirname, '/images/testIcon.png')
let tray = null;
function ShowWindow(windowNameFromTray)
{
singleWindow.webContents.send('open-window-from-other-process', windowNameFromTray);
}
ipcMain.on('open-currently-open-window', function(e, windowName)
{
ShowWindow(windowName)
})
let template =
[
{
label: 'windows',
submenu:[]
}
]
ipcMain.on('retrieved-windowId', function(e, windowName)
{
tray.destroy()
tray = new Tray(iconPath)
tray.setToolTip('Window App')
var element =
{
label: windowName,
click()
{
ShowWindow(windowName)
}
}
template[0].submenu.push(element)
let contextMenu = Menu.buildFromTemplate(template)
tray.setContextMenu(contextMenu)
});
...
【问题讨论】:
-
这也发生在我没有 Electron 的情况下。我认为这是Windows中的一个错误。当我将鼠标悬停在图标上时,它们就会消失。
-
感谢您的回复。 Slack 不会发生这种情况。但我想你并没有真正拥有多个 Slack 窗口,因为 Slack 主要是选项卡。
-
你找到解决办法了吗?
标签: javascript electron system-tray