Eine Frage, welche in NeutralinoJS-Foren immer wieder auftaucht: Wie schließe ich ein externes Fenster, wenn die eigentliche Neutralino-App beendet wird? Dieser Beitrag zeigt wie es geht.
Neutralino: Die Lösung für das Fenster-Problem
Öffnet man in Neutralino ein externes Fenster, erstellt man im Prinzip eine 2. eigenständige Neutralino App.
Es bleibt dann dem Programmierer überlassen, wie er die Kommunikation zwischen den beiden Apps integriert.
Die einfachste Methode ist, sich beim Erstellen des externen Fensters dessen Prozess-ID (PID) zu besorgen und beim beenden der Haupt-App ein KILL-Signal an die 2. App zu senden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
// Open a new window // var pid = 0; (async () => { let res = await Neutralino.window.create('https://marketmix.com', { enableInspector: false, width: 500, height: 300, maximizable: false, exitProcessOnClose: true, processArgs: '--window-id=W_DOC' }); pid = res.pid; })(); // Hard kill on app close // function onWindowClose() { (async () => { if(NL_OS === 'Windows') { await Neutralino.os.spawnProcess(`taskkill /F /PID ${pid}`); } else { await Neutralino.os.spawnProcess(`kill -KILL ${pid}`); } })(); Neutralino.app.exit(); } Neutralino.events.on("windowClose", onWindowClose); |
Diese Vorgehensweise funktioniert auch dann, wenn in der 2. App kein JavaScsipt läuft um eine Kommunikation zwischen den beiden Apps aufzubauen.