2017-02-16 4 views
0

Je vais commencer par dire que je suis loin d'un mec JavaScript. Je travaille plus avec le HTML et le CSS, et je "mets" avec JavaScript, comme dans le tweak du code pour que le code de JQuery fasse ce que je voudrais sur le front-end.Exécuter des fichiers/événements Windows avec NW.js (Node Webkit)

J'ai un petit problème avec une tâche que j'essaie de terminer, ce qui m'a amené à utiliser NW.js (Node Webkit) pour la première fois.

Je suis en train de créer une interface utilisateur 4 bouton qui permet aux 4 événements suivants se produire sur un clic:

1. Load a website in a new window 
2. Open windows explorer to a specific directory and allow the user to browse 
3. Extend Windows Display on a Dual Monitor Setup 
4. Clone Windows Display on a Dual Monitor Setup 

j'étais à l'origine à peu près fini et atteint mes résultats facilement avec un fichier HTML Application - Je sais, démodé, mais cela m'a permis de travailler dans mes compétences et d'accomplir assez facilement les tâches dont j'avais besoin. Problème wa, il ne permettrait pas CSS3 et le site Web en cours d'utilisation l'a utilisé, et il a ruiné l'aspect de l'ensemble. Sooo j'avais besoin de quelque chose de nouveau. Je suis tombé sur NW.js et j'ai commencé à partir de là. J'ai mon paquet chargé, mon "application" est maintenant lancée, mais l'ancien script ne fonctionne pas et je suis de retour à la case départ. Je n'ai aucune idée de comment lancer des exécutables dans Windows en utilisant NW.js - ça me rend fous!

Ci-dessous le code qui a travaillé dans le fichier d'application HTML (moins l'explorateur de fichiers, que je devais encore arriver à avant de réaliser qu'il ne fonctionnerait pas):

<!DOCTYPE html> 
    <html> 
     <head> 
       <title>My HTML App</title> 
       <link rel="stylesheet" href="style.css"> 
       <script type="text/javascript" language="javascript"> 
        function RunPad() { 
        WshShell = new ActiveXObject("WScript.Shell"); 
        WshShell.Run("c:/windows/system32/notepad.exe", 1, false); 
        } 
        function RunExtend() { 
        WshShell = new ActiveXObject("WScript.Shell"); 
        WshShell.Run("c:/windows/System32/DisplaySwitch.exe /extend", 1, false); 
        } 
        function RunClone() { 
        WshShell = new ActiveXObject("WScript.Shell"); 
        WshShell.Run("c:/windows/System32/DisplaySwitch.exe /clone", 1, false); 
        } 
        function RunWebsite() { 
        WshShell = new ActiveXObject("WScript.Shell"); 
        WshShell.Run("c:/Program Files/Internet Explorer/iexplore.exe", 1, false); 
        } 
       </script> 
       </head> 
         <body> 
          <div class="container"> 
            <div class="col-1-2"><img src="website.jpg" onclick="RunWebsite();"></div> 
            <div class="col-1-2"><img src="resources.jpg"></a></div> 
            <div class="col-1-2"><img src="single_screen.jpg" onclick="RunExtend();"></div> 
            <div class="col-1-2"><img src="dual_screen.jpg" onclick="RunClone();"></div></div> 
          </div> 
        </body> 
    </html> 

Je suis vraiment coincé sur ceci et je ne suis pas sûr quelle route prendre pour compléter ceci avec NW.js

Toute aide serait appréciée.

Répondre

0

ActiveXObject est pour IE/Edge uniquement, il ne fonctionnera donc pas sous Chromium (utilisé par NW).

Ce que vous pouvez faire est bien créer des scripts individuels VBS pour chacun de vos fonctions de ActiveXObject et appeler/les exécuter au besoin avec Node.js (pris en charge par NW) de cette façon ...

function RunExtProgram(ProgName){ 

require('child_process').exec(ProgName,function(error,stdout,stderr){if(error!==null){alert('Unable to launch process:<br><br>'+stderr+'<br><br>'+ProgName);}}); 

} 

Utilisation exemple:

RunExtProgram('C:/test/abc.vbs');