情况如下:
是否可以使用电子API与Angular应用程序中的OS进行交互?我确实认为IPC无法运行,因为它们不在同一实例上运行,但是我想知道是否有人可以提出其他解决方案。
谢谢哈维
答案 0 :(得分:0)
经过一些研究,在Angular应用程序中使用IPC似乎是可行的。
由于Angular应用是在Renderer Process
中呈现的,因此可以调用ipcRenderer
模块以进行此类通信:
在电子应用程序的Main Process
中:
const { ipcMain } = require('electron');
ipcMain.on('customChannel', (event, args) => {
console.log('event: ', event);
console.log('args: ', args);
});
在Angular应用程序上,在组件上:
// Component implementing OnInit
ngOnInit(): void {
if ((<any>window).require) {
try {
const ipc = (<any>window).require('electron').ipcRenderer;
ipc.send('customChannel', 'this is a test');
} catch (error) {
throw error;
}
} else {
console.warn('Could not load electron ipc');
}
}
答案 1 :(得分:0)
看起来在上面的示例中,远程 Web 应用程序安装了电子。如果有人想在不依赖于网络应用程序的情况下进行通信,那么我们可以使用 contextBridge。
在您的电子应用程序中
const { contextBridge, ipcRenderer } = require('electron')
contextBridge.exposeInMainWorld(
'electron', //This will be exposed as window.electron in your remote app
{
doThing: () => ipcRenderer.send('do-a-thing')
}
)
在您的远程应用中
window.electron.doThing()