如何重新打开已运行的node-webkit窗口应用程序?

时间:2014-10-27 12:44:55

标签: javascript node-webkit

我目前有一个适用于Mac和Windows的node-webkit应用程序。当您关闭窗口时,应用程序将继续在后台运行,并可以通过系统托盘重新打开。

我想让我的用户从可执行文件中打开窗口(想想桌面上.exe的快捷方式)。

在Mac上,我这样做是为了允许用户从Dock打开窗口:

var gui = require('nw.gui');

gui.App.on('reopen', function() {
    win.show();
});

但是,根据文档,“重新打开”事件是仅限Mac的功能。

是否可以在Windows上具有相同的行为?怎么样?

2 个答案:

答案 0 :(得分:2)

是的,目前还没有为Windows提供重新打开的功能,但另一种方法是使用Tray中所述的window.hide()和托盘功能。
在我的应用程序中,我创建了自定义按钮,用于最小化,最大化和关闭,并为它们提供以下功能:

var gui = require('nw.gui');
var window = gui.Window.get();  
var isMaximised = false;

//Minimise:  
minimise: function(){
    window.hide();
    var tray = new gui.Tray({title: 'Tray'});
    var menuTray = new gui.Menu();
    menuTray.append(new gui.MenuItem({ label : 'quit',
      click: function(){
        window.close();
      }
    }));
    tray.menu = menuTray;

    tray.on('click',function(){
      tray.remove();
      window.show();
      tray = null;
    });
}  

//Maximise  
maximise: function(){  
  if (isMaximized) {
    isMaximized = false;
    window.unmaximize();
  } else {
    isMaximized = true;
    window.maximize();
  }
}  

 //Close  
close: function(){  
   window.hide();
   var tray = new gui.Tray({title: 'Tray'});
   var menuTray = new gui.Menu();
   menuTray.append(new gui.MenuItem({ label : 'quit',
       click: function(){
       tray.remove();
       window.close();
       }
   }));
   tray.menu = menuTray;
   tray.on('click',function(){
     tray.remove();
     window.show();
     tray = null;
   });
}

因此,在关闭应用程序时单击关闭按钮,它会隐藏应用程序并在托盘(Dock)中创建一个menuItem。点击停靠栏中的图标,它会向用户显示应用程序 现在关闭应用程序的方法是右键单击停靠项并选择关闭应用程序的退出按钮。

答案 1 :(得分:1)

我有问题,我已经使用listen open而不是重新打开修复它,这里是您的桌面案例的简单代码 简单的清单Json“package.json”:

{
  "main": "index.html",
  "name": "reopen from Desktop",
  "window":
  {
  "width": 300,
  "height": 200
  }
}

然后是一个简单的index.html文件

<html>
 <head>
  <script>
   var gui = require('nw.gui');
   var win = gui.Window.get();
  </script>
 </head>
 <body>
  <script>
   //list to open and make the app show
   gui.App.on('open', function() {
   win.show();
   alert("file re-open");
   });

   // prevent close and make it hide
   win.on('close', function() {
   win.hide(); 
   });
  </script>
  <!-- forse close the app -->
   <center><br><br><input type="button" value="exit app" onclick="win.close(true)"></center>
  </body>
 </html>

然后复制并通过与正常包方式相同的目录上的窗口的node-webkit文件,然后将nw.exe重命名为reopen.exe,然后右键单击并创建桌面快捷方式并从文件夹中打开exe文件然后单击关闭将隐藏它然后单击桌面快捷方式,它将重新显示它“重新打开”并带有警报