Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

136
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda