Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

134
Views
Lanzamiento de la aplicación NWJS por separado desde dentro de una aplicación NWJS al hacer clic en un botón

Estoy trabajando en una aplicación de lanzamiento de software. No puedo saber cómo iniciar otra aplicación al hacer clic en un botón en mi aplicación NWJS. Lo he hecho antes en un HTA en el pasado para lanzar mis videojuegos, pero no puedo entenderlo aquí. En el hta, tuve que generar un archivo bat al hacer clic y luego el script bat ejecutó el programa.

Mi botón que he hecho:

 <span name="SystemWrapper3" id="SystemWrapper3" class="SystemWrapper3"> <input type="button" value="Calculator" name="SystemInput3" id="SystemInput3" class="SystemInput3" /> <i class="fa-solid fa-square-root-variable fa-lg" id="SystemIcon4"></i> </span>

He estado investigando, todavía soy bastante nuevo en esto. Probé varias soluciones que encontré buscando cosas en línea, pero no funcionaron. nose si es incompatibilidad de versiones o que? Estoy usando NWJS 0.64.1 Win64 Puede o no terminar siendo una aplicación NWJS que estoy lanzando, podría ser solo un exe normal. No estoy seguro de si hay diferentes requisitos para hacer ambos.

EDITAR::::

Encontré esto, pero no estoy seguro de cómo llamar a este código al hacer clic en mi botón. ¿Quizás convertirlo en una función? Luego llame al nombre de la función con onclick="myfunc()"?

 var exec = require('child_process').execFile; exec('C:/asd/test.exe', function(err, data) { console.log(err) console.log(data.toString()); });

EDITAR2::::

Así que probé esto y varias variaciones y todavía no tuve suerte. Lo llamé desde mi botón con onclick="launchbat()".

 <script type="text/javascript"> function launchbat() { var exec = require('child_process').execFile; exec('"C:\Users\Dustin Angeletti\OneDrive\Documents\bat.bat"', function(err, data) { console.log(err) console.log(data.toString()); }); } </script>
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Esto debería funcionar. Aunque dependiendo de lo que desee, es posible que desee utilizar require('child_process').spawn en lugar de require('child_process').exec .

Vanilla JS: debe configurar cada botón (repetitivo) y actualizar la matriz.

 <button id="calculator"> <i class="fa-solid fa-square-root-variable fa-lg"></i> Open Calculator </button> <button id="photoshop"> <i class="fa-solid fa-aperture fa-lg"></i> Open Adobe Photoshop </button> <script> const exec = require('child_process').exec; const path = require('path'); const appMap = [ { buttonId: 'calculator', executable: 'calc.exe' }, { buttonId: 'photoshop', executable: path.join('C:', 'Program Files (x86)', 'Adobe', 'Photoshop', 'photoshop.exe') } ]; function executionCallback (err, stdout, stderr) { if (err) { console.log({ err }); } if (stdout) { console.log({ stdout }); } if (stderr) { console.log({ stderr }); } } appMap.forEach(function (app) { const button = document.getElementById(app.buttonId) button.addEventListener('click', function () { exec(app.executable, {}, executionCallback); }); }); </script>

Vue.js: puede usar Vue en su lugar, aquí todo lo que necesita actualizar es la matriz y Vue se encargará de todo lo demás.

 <div id="app"> <button v-for="app in apps" @click="run(app.executable)"> <i class="fa-solid fa-lg" :class="app.icon"></i> {{ app.label }} </button> </div> <script src="https://unpkg.com/vue@3.2.36/dist/vue.global.prod.js"></script> <script> const exec = window.nw.require('child_process').exec; const path = window.nw.require('path'); const app = Vue.createApp({ data: function () { return { apps: [ { icon: 'fa-square-root-variable', label: 'Open Calculator', executable: 'calc.exe' }, { icon: 'fa-aperture', label: 'Open Adobe Photoshop', executable: path.join('C:', 'Program Files (x86)', 'Adobe', 'Photoshop', 'photoshop.exe') } ] } }, methods: { run: function (appExecutable) { const options = {}; exec(appExecutable, options, function (err, stdout, stderr) { if (err) { console.log({ err }); } if (stdout) { console.log({ stdout }); } if (stderr) { console.log({ stderr }); } }); } } }).mount('#app'); </script>
about 4 years ago · Juan Pablo Isaza Report

0

Lo averigué. Muy simple, mi primer enfoque y el segundo funcionan bien. Mi problema todo el tiempo fue usar barras invertidas como en la verdadera ruta del archivo. Tienes que usar barras diagonales. Muy raro. Esto funciona para rutas relativas y absolutas.

 function AppLaunch7() { const path = require('path'); nw.Shell.openItem(path.resolve('D:/SECURE DRIVE/SYSTEM CORE/SECURE CALC/SECURE CALC.exe')); } <div name="SystemWrapper1" id="SystemWrapper1" class="SystemWrapper1" onclick="AppLaunch7()"> <input type="button" value="Documents" name="SystemInput1" id="SystemInput1" class="SystemInput1" /> <span name="SystemIcon1" id="SystemIcon1" class="material-icons">description</span> </div>
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!