以下是一个简单的使用示例,展示如何在 Electron 主进程中集成和使用该插件,使用 CommonJS 的引用方式:
```javascript
const { app, BrowserWindow, ipcMain } = require('electron');
const CppPluginBridge = require('@hysc/boom-cpp-plugin');
let mainWindow;
let mCppPlugin;
app.on('ready', () => {
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
contextIsolation: false,
},
});
mainWindow.loadURL('file://' + __dirname + '/index.html');
ipcMain.on('start-audio-capture', (event, args) => {
if (!mCppPlugin) {
mCppPlugin = new CppPluginBridge();
mCppPlugin.bindTargetWindow(mainWindow);
mCppPlugin.init();
mCppPlugin.setAudioPluginEventCallback((audioData) => {
console.log('Received audio data:', audioData);
});
}
mCppPlugin.startAudioCapture(args.sourceId || 0, args.captureMode || false);
});
ipcMain.on('stop-audio-capture', () => {
if (mCppPlugin) {
mCppPlugin.destroy();
mCppPlugin = null;
}
});
ipcMain.on('start-window-detection', (event, args) => {
if (!mCppPlugin) {
mCppPlugin = new CppPluginBridge();
mCppPlugin.bindTargetWindow(mainWindow);
mCppPlugin.init();
}
mCppPlugin.setWinPluginEventCallBack((eventData) => {
console.log('Window detection event:', eventData);
});
mCppPlugin.startWindowDetector(args.sourceId, args.sourceName);
});
ipcMain.on('stop-window-detection', () => {
if (mCppPlugin) {
mCppPlugin.destroy();
mCppPlugin = null;
}
});
});
app.on('window-all-closed', () => {
if (mCppPlugin) {
mCppPlugin.destroy();
mCppPlugin = null;
}
app.quit();
});
在渲染进程中,可以通过 ipcRenderer
发送消息来控制插件:
const { ipcRenderer } = require('electron');
// 开始音频采集
ipcRenderer.send('start-audio-capture', { sourceId: 0, captureMode: false });
// 停止音频采集
ipcRenderer.send('stop-audio-capture');
// 开始窗口检测
ipcRenderer.send('start-window-detection', { sourceId: 'window:12345', sourceName: 'MyWindow' });
// 停止窗口检测
ipcRenderer.send('stop-window-detection');
以上代码展示了如何初始化插件、绑定窗口、启动音频采集和窗口检测等功能。