最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

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

IT培训 admin 7浏览 0评论

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

我希望我的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);
});

更新:

我找到了这个menubar repo,但它在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();
    } }
]);

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

我希望我的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);
});

更新:

我找到了这个menubar repo,但它在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();
    } }
]);
发布评论

评论列表 (0)

  1. 暂无评论