【问题标题】:How reopen an already running node-webkit window app?如何重新打开已经运行的 node-webkit 窗口应用程序?
【发布时间】:2014-12-22 15:35:09
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

    标签: javascript node-webkit


    【解决方案1】:

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

    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)中创建一个菜单项。单击停靠栏中的图标时,它会向用户显示应用程序。
    现在可以关闭应用程序的唯一方法是右键单击停靠项目并选择关闭应用程序的退出按钮。

    【讨论】:

      【解决方案2】:

      我遇到了这个问题,我已经使用听打开而不是重新打开来修复它,这是您桌面案例的简单代码 简单清单 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>
      

      然后像普通打包方式一样将window的node-webkit文件复制并粘贴到同一目录中,然后将nw.exe重命名为reopen.exe,然后右键单击并创建桌面快捷方式并从文件夹中打开exe文件并单击关闭它会隐藏它然后单击桌面快捷方式它会重新显示它“重新打开”并发出警报

      【讨论】:

        猜你喜欢
        • 2013-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-22
        • 1970-01-01
        相关资源
        最近更新 更多