当前位置: 首页 > 面试题库 >

Electron.js如何最小化/关闭系统托盘的窗口并从托盘恢复窗口?

艾骏
2023-03-14
问题内容

我希望我的Electron.js应用程序驻留在系统托盘上,并且每当用户要执行某项操作时,他们都可以从系统托盘中进行还原,则可以执行某些操作并将其最小化/关闭回系统托盘。我怎么做?

我已经tray从文档中看到了这一部分,但是对于实现我想要的内容并没有多大帮助。

这是我到目前为止在main.js文件上得到的

var application = require('app'),
    BrowserWindow = require('browser-window'),
    Menu = require('menu'), 
    Tray = require('tray'); 
application.on('ready', function () {
    var mainWindow = new BrowserWindow({
        width: 650,
        height: 450,
        'min-width': 500,
        'min-height': 200,
        'accept-first-mouse': true,
        // 'title-bar-style': 'hidden',
        icon:'./icon.png'
    });
    mainWindow.loadUrl('file://' + __dirname + '/src/index.html');
    mainWindow.on('closed', function () {
        mainWindow = null;
    });
    mainWindow.setMenu(null);

    var appIcon = null;
    appIcon = new Tray('./icon-resized.png');
    var contextMenu = Menu.buildFromTemplate([
        { label: 'Restore', type: 'radio' }
    ]);
    appIcon.setToolTip('Electron.js App');
    appIcon.setContextMenu(contextMenu);
});

更新:

我找到了这个菜单栏存储库,但是在Linux上无法正常工作。


问题答案:

我实际上是很久前才弄清楚的,但是对于在这里遇到相同问题的人们来说,是一种可以使最小化tray和恢复的方法tray。诀窍是捕捉closeminimize事件。

var BrowserWindow = require('browser-window'),

var mainWindow = new BrowserWindow({
    width: 850,
    height: 450,
    title: "TEST",
    icon:'./icon.png'
});

mainWindow.on('minimize',function(event){
    event.preventDefault();
    mainWindow.hide();
});

mainWindow.on('close', function (event) {
    if(!application.isQuiting){
        event.preventDefault();
        mainWindow.hide();
    }

    return false;
});

并从 Tray

var contextMenu = Menu.buildFromTemplate([
    { label: 'Show App', click:  function(){
        mainWindow.show();
    } },
    { label: 'Quit', click:  function(){
        application.isQuiting = true;
        application.quit();
    } }
]);


 类似资料:
  • 将图标和上下文菜单添加到系统托盘。 进程: 主进程​ Tray是一个[EventEmitter][event-emitter]. 1 const {app, Menu, Tray} = require('electron') 2 let tray = null 3 app.on('ready', () => { 4 tray = new Tray('/path/to/my/icon') 5 con

  • 系统托盘 添加图标和上下文菜单到系统通知区 进程:主进程 Tray 是一个 EventEmitter. const { app, Menu, Tray } = require('electron') let tray = null app.on('ready', () => { tray = new Tray('/path/to/my/icon') const contextMenu =

  • 系统托盘是应用程序窗口之外的菜单。 在MacOS和Ubuntu上,它位于屏幕的右上角。 在Windows上,它位于右下角。 我们可以使用Electron为系统托盘中的应用程序创建菜单。 创建一个新的main.js文件并将以下代码添加到其中。 准备好png文件用于系统托盘图标。 const {app, BrowserWindow} = require('electron') const url =

  • 本文向大家介绍WinForm实现最小化到系统托盘方法实例详解,包括了WinForm实现最小化到系统托盘方法实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了WinForm实现最小化到系统托盘方法。分享给大家供大家参考。具体分析如下: 有个叫NotifyIcon的控件 1、建个WinForm项目,其它操作略过。 2、拉个NotifyIcon控件,将属性Visable设置成False,在

  • 问题内容: 在我的Java应用程序中,我有一个JFrame窗口,如何从Java程序中最小化它? 问题答案: 最小化 用还原

  • 我正在开发一个Android应用程序。在页面底部的一个活动中,我显示了一个popupWindow,并用这个popupWindow替换了键盘。这个popupWindow内部有一个搜索视图,所以当搜索视图处于焦点时,键盘将被显示,popupWindow将向上滑动。现在,当我按下后退按钮(手机的后退按钮),然后键盘和弹出窗口都被关闭。所以,我想在这里只关闭键盘,弹出窗口应该在键盘关闭后向下滑动。 我尝试