从完全不同的系统进程访问 Electron API
Access Electron API from a completely different system process
我正在寻找一种方法来捕获 VS Code 扩展主机的屏幕截图 window。这个 window 在我的扩展测试 运行 时打开(这来自 VS 代码扩展的默认 Yeoman 模板)。
我无法使用我的扩展程序的上下文,因为该扩展程序只能访问 VS Code API 和 VS Code 运行s 扩展程序,这些扩展程序位于与 Electron 进程(主进程或渲染器)不同的节点进程中. IPC 通过 API 而不是 运行 进程中的扩展使用。
我可以 运行 Electron 渲染器进程中的此代码(使用 DevTools 或作为 Electron 应用程序脚本的一部分)来捕获 Electron window:
const electron = require('electron');
electron.remote.getCurrentWindow().capturePage(image => {
//electron.clipboard.writeImage(image);
electron.clipboard.writeText(image.toDataURL());
console.log('Data URL is in clipboard.');
});
我已经验证将它放在 VS Code window DevTools 中会生成正确的数据 URI。
为了能够从不同的节点进程执行此操作,只知道代码 window PID,我想我应该将调试器附加到 VS 代码扩展主机 Electron window 并且使用 CDP,我会向 运行 发出 Runtime.evaluate
调用,就好像它已输入到 DevTools 中一样。
但是,我正在努力附加调试器。一般有两种做法:
kill -s SIGUSR1 <node-pid>
对于 Unix/macOS
process._debugProcess(proc.pid);
对于 Windows
我现在对 Windows 感兴趣,所以我从一个新的节点进程发出 Windows 行。调试器附加成功后应该发生的是目标进程应该打印出如下内容:
Debugger listening on ws://127.0.0.1:9229/cf49bcfe-d922-4f89-b438-57755d254198
For help see https://nodejs.org/en/docs/inspector
但是在我的情况下,这仅在我使用 --inspect
启动准系统 Electron 应用程序然后发出 process._debugProcess(proc.pid);
时有效,没有 --inspect
它不会引发错误,但是也不附加调试器。
process._debugProcess
现在适用于 Electron 5。
我正在寻找一种方法来捕获 VS Code 扩展主机的屏幕截图 window。这个 window 在我的扩展测试 运行 时打开(这来自 VS 代码扩展的默认 Yeoman 模板)。
我无法使用我的扩展程序的上下文,因为该扩展程序只能访问 VS Code API 和 VS Code 运行s 扩展程序,这些扩展程序位于与 Electron 进程(主进程或渲染器)不同的节点进程中. IPC 通过 API 而不是 运行 进程中的扩展使用。
我可以 运行 Electron 渲染器进程中的此代码(使用 DevTools 或作为 Electron 应用程序脚本的一部分)来捕获 Electron window:
const electron = require('electron');
electron.remote.getCurrentWindow().capturePage(image => {
//electron.clipboard.writeImage(image);
electron.clipboard.writeText(image.toDataURL());
console.log('Data URL is in clipboard.');
});
我已经验证将它放在 VS Code window DevTools 中会生成正确的数据 URI。
为了能够从不同的节点进程执行此操作,只知道代码 window PID,我想我应该将调试器附加到 VS 代码扩展主机 Electron window 并且使用 CDP,我会向 运行 发出 Runtime.evaluate
调用,就好像它已输入到 DevTools 中一样。
但是,我正在努力附加调试器。一般有两种做法:
kill -s SIGUSR1 <node-pid>
对于 Unix/macOSprocess._debugProcess(proc.pid);
对于 Windows
我现在对 Windows 感兴趣,所以我从一个新的节点进程发出 Windows 行。调试器附加成功后应该发生的是目标进程应该打印出如下内容:
Debugger listening on ws://127.0.0.1:9229/cf49bcfe-d922-4f89-b438-57755d254198
For help see https://nodejs.org/en/docs/inspector
但是在我的情况下,这仅在我使用 --inspect
启动准系统 Electron 应用程序然后发出 process._debugProcess(proc.pid);
时有效,没有 --inspect
它不会引发错误,但是也不附加调试器。
process._debugProcess
现在适用于 Electron 5。