Как я могу получить содержимое электронного стента из моего основного кода процесса? - PullRequest
2 голосов
/ 08 апреля 2019

Могу ли я каким-то образом получить содержимое stdout от Electron из моего основного кода процесса?

Так, например, у меня есть приложение для электронов, а в моем основном коде процесса:

import {app, BrowserWindow, globalShortcut, session} from "electron"

// Now what? How do I get any and all output that goes to the console?

Мне любопытно, потому что, когда я устанавливаю некоторые флаги для Chrome с помощью app.commandLine.appendSwitch(...), я вижу вывод в консоли из Chrome, и я хотел бы посмотреть, можно ли как-нибудь получить этот выводиз моего основного кода процесса Electron.

РЕДАКТИРОВАТЬ, если вышеупомянутое не было достаточно ясным:

Электрон выводит на консоль.Мой код работает в Electron.Например, базовый экземпляр Chrome выводит информацию на стандартный вывод, поэтому мое собственное электронное приложение выводит на стандартный вывод тот же материал, что и базовый вывод Chrome.

Я хотел бы захватить всеположить из моего собственного электронного приложения с использованием кода в моем собственном электронном приложении.

Имеет ли это смысл?

Например, если я добавлю следующее в свою электронную системукод процесса:

app.commandLine.appendSwitch('remote-debugging-port', '8315')

это заставляет мое приложение Electron выводить материал на стандартный вывод (или аналогичный, как я вижу это в выводе терминала).

Я хотел бы захватить этот выводиз того же кода, который вызывает вывод, так:

// this line indirectly causes my app to output to stdout
// (because it is forwarding Chrome's output, or something):
app.commandLine.appendSwitch('remote-debugging-port', '8315')

// Now how to I capture that output?

1 Ответ

0 голосов
/ 08 апреля 2019

Да!Вы, конечно, можете.Electron изначально работает с машиной, на которой он запущен, если это позволяет ваша безопасность.

const buffer_size = (1024 * 500000);//Very large buffer size. Shouldn't ever need anything this big

     getCommandLineResponse: async function (callback) {
            let date = moment().toDate();

            let promise = function () {
                return new Promise((resolve, reject) => {
                    //create a child process to run
                    var {exec} = require('child_process');
                    let path = require('path');
                    let app = require('electron').remote;
                    let exePath = "YOUREXE.exe";
                    //Define the command line interface and all arguments
                    let cli = `"${exePath}"`;
                    //This is the core. Call the .EXE specifying the options
                    exec(cli, {maxBuffer: buffer_size}, (err, stdout, stderr) => {
                        if (err) {
                            reject(stderr);
                        } else {
                            console.log('Received from CLI - ' + stdout);
                            resolve(stdout);
                        }

                        exec = null;
                    });

                });
            };

            //Execute the CLI
            await promise(filePath);

            if(callback)
            {
                await callback();
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...