gpt4 book ai didi

electron - 如何将xterm.js( Electron 版)连接到实际的工作命令提示符?

转载 作者:行者123 更新时间:2023-12-03 12:23:59 24 4
gpt4 key购买 nike

我已经钻进一个深深的兔子洞,试图找出标题的含义。如果您对此问题感到困惑,我将给出更详细的解释:您是否见过VSCode终端?还是总站?好吧,我想做那些应用程序要做的事情。我有一个 Electron 应用程序,为了方便用户,我想在其中包含某种命令提示符。我查看过xterm.js,但只能找到SSH之类的示例,而不能直接链接到系统上托管的控制台。 我要问的是如何将xterm.js( Electron 形式)连接到实际工作的命令提示符? 我见过能够与cmd.exe进行交互的程序,例如Windows Terminal。我将以它为例。
Image taken from process hacker
在所附的照片中,您可以看到三个过程。 WindowsTerminal.exe,OpenConsole.exe和cmd.exe。深入研究Windows Terminal的源代码之后,我可以看到OpenConsole.exe开始使用您制作的cmd的每个实例。因此,我假设这是与cmd.exe交互的程序。现在我知道Windows终端是使用UWP制作的,但是您可以看到with VSCode发生了类似的事情(我打开了一堆终端进行演示)
这是另一篇带有similar question的帖子,但没有答案。我希望这一点能引起大家的注意。
因此,如果您可以回答,谢谢。如果您有点偏颇,请记住我的问题:如何将xterm.js( Electron 版)连接到实际工作的命令提示符?
抱歉,如果您听不懂我的措辞,我不是很擅长:P

最佳答案

following video对我有帮助。不久,您需要:

  • 安装node-pty和electronic-rebuild软件包(除xterm之外)
  • 将以下代码放置到适当的处理文件中

  • 在主进程(main.js)中:
    const os = require('os');
    const pty = require('node-pty');

    var shell = os.platform() === "win32" ? "powershell.exe" : "bash";
    var ptyProcess = pty.spawn(shell, [], {
    name: 'xterm-color',
    cols: 80,
    rows: 24,
    cwd: process.env.HOME,
    env: process.env
    });

    ptyProcess.on("data", (data) => {
    mainWindow.webContents.send("terminal-incData", data);
    });

    ipcMain.on("terminal-into", (event, data)=> {
    ptyProcess.write(data);
    })
    在渲染器过程中:
    const Terminal  =  require('xterm').Terminal;
    const FitAddon = require('xterm-addon-fit').FitAddon;

    const term = new Terminal();
    const fitAddon = new FitAddon();
    term.loadAddon(fitAddon);

    // Open the terminal in #terminal-container
    term.open(document.getElementById('terminal-container'));
    term.onData(e => {
    ipcRenderer.send("terminal-into", e);
    } );
    ipcRenderer.on('terminal-incData', (event, data) => {
    term.write(data);
    })

    // Make the terminal's size and geometry fit the size of #terminal-container
    fitAddon.fit();

    出现错误时,
  • 运行electron-rebuild命令。

  • 当您尝试安装electron-rebuild软件包时,可能会出现以下错误:
    在MAC中: error: no template named 'remove_cv_t'solution is here
    在Windows中: gyp ERR! find Python solution is here

    关于electron - 如何将xterm.js( Electron 版)连接到实际的工作命令提示符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63390143/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com