windows 中 osk.exe为屏幕软件,以下任意方式都可以执行。

Node方式 调起任意程序

execFile 是 Node.js 中的 child_process 模块的一部分,在 Node.js 环境中执行外部命令或可执行文件

const { execFile } = require('child_process');
const path = require('path');

const demoPath =  path.join(__dirname, "../../resources/server/demo-01.exe");
  // 启动 demo.exe
  const args = ['-e', '-g','-s' ,'-xyz'];
    demoProcess= execFile(demoPath,args ,(error, stdout, stderr) => {
      if (error) {
        console.error(`启动 demo.exe 失败: ${error}`);
        return;
      }
      console.log(`demo.exe 输出: ${stdout}`);
    });

    // 监听 demo.exe 进程的 exit 事件,在进程退出后执行其他操作
    demoProcess.on('exit', (code) => {
      // 进程退出后的回调函数
      console.log(`demo.exe 进程退出,退出码: ${code}`);
      // 执行其他操作...
    });

Election shell ipcMain,弹出软键盘 、执行程序

Electron Main Process 模块介绍—ipcMainshell

Electron的主进程mian.js代码中 添加ipc通道消息:

  ipcMain.on('open-osk', async (event) => {
    await shell.openPath('osk');
    //异步返回消息
    event.reply("osk-start",[true])
  });

js发消息调用:

  window.electron?.ipcRenderer.on("osk-start",async (_,args)=>{
    console.log("执行结果"+args[0]);
  })
function openosk(){
  window.electron?.ipcRenderer.send("osk");
}

执行C#代码

安装electron-edge-js库:

npm install electron-edge-js
const edge = require('electron-edge-js');

// 自定义C#函数、执行cmd 命令-如打开软键盘
const openWindowsKeyboard = edge.func(`
    async (input) => {
        // 引入System.Diagnostics命名空间
        var process = new System.Diagnostics.Process();

        // 设置要执行的命令和参数
        process.StartInfo.FileName = "cmd.exe";
        process.StartInfo.Arguments = "/C osk"; // osk为打开软键盘的命令

        // 启动进程
        process.Start();

        // 等待进程退出并返回结果
        process.WaitForExit();
        return null;
    }
`);

//同样使用 Electron ipcMain 消息通道来调用方法:
  ipcMain.on('open-osk', async (event) => {       
    openWindowsKeyboard(null, (error, result) => {
      console.log(error,result);
      if (error) {
        console.error(error);
        event.reply("osk-start",[false])
      } else {
        event.reply("osk-start",[true])
        console.log("osk is open");
      }
    });
  });
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐