const { Menu, app } = require('electron');
const template = [
{
label: '文件',
submenu: [
{
label: '新建',
accelerator: 'CmdOrCtrl+N',
click: () => {
console.log('新建文件');
}
},
{
label: '打开',
accelerator: 'CmdOrCtrl+O',
click: async () => {
const { dialog } = require('electron');
const result = await dialog.showOpenDialog({
properties: ['openFile']
});
console.log(result.filePaths);
}
},
{ type: 'separator' },
{
label: '退出',
accelerator: 'CmdOrCtrl+Q',
click: () => {
app.quit();
}
}
]
},
{
label: '编辑',
submenu: [
{ role: 'undo', label: '撤销' },
{ role: 'redo', label: '重做' },
{ type: 'separator' },
{ role: 'cut', label: '剪切' },
{ role: 'copy', label: '复制' },
{ role: 'paste', label: '粘贴' },
{ role: 'selectAll', label: '全选' }
]
},
{
label: '查看',
submenu: [
{ role: 'reload', label: '重新加载' },
{ role: 'toggleDevTools', label: '开发者工具' },
{ type: 'separator' },
{ role: 'resetZoom', label: '实际大小' },
{ role: 'zoomIn', label: '放大' },
{ role: 'zoomOut', label: '缩小' },
{ type: 'separator' },
{ role: 'togglefullscreen', label: '全屏' }
]
},
{
label: '帮助',
submenu: [
{
label: '关于',
click: () => {
console.log('关于');
}
}
]
}
];
const menu = Menu.buildFromTemplate(template);
Menu.setApplicationMenu(menu);
const { contextBridge, ipcRenderer } = require('electron');
contextBridge.exposeInMainWorld('electronAPI', {
showContextMenu: () => ipcRenderer.send('show-context-menu')
});
const { Menu, ipcMain } = require('electron');
ipcMain.on('show-context-menu', (event) => {
const template = [
{ label: '复制', role: 'copy' },
{ label: '粘贴', role: 'paste' },
{ type: 'separator' },
{
label: '自定义操作',
click: () => {
event.sender.send('context-menu-command', 'custom');
}
}
];
const menu = Menu.buildFromTemplate(template);
menu.popup(BrowserWindow.fromWebContents(event.sender));
});
window.addEventListener('contextmenu', (e) => {
e.preventDefault();
window.electronAPI.showContextMenu();
});
const { Tray, Menu, nativeImage } = require('electron');
let tray = null;
function createTray() {
const icon = nativeImage.createFromPath('icon.png');
tray = new Tray(icon);
const contextMenu = Menu.buildFromTemplate([
{
label: '显示窗口',
click: () => {
win.show();
}
},
{
label: '隐藏窗口',
click: () => {
win.hide();
}
},
{ type: 'separator' },
{
label: '退出',
click: () => {
app.quit();
}
}
]);
tray.setToolTip('我的应用');
tray.setContextMenu(contextMenu);
tray.on('click', () => {
win.isVisible() ? win.hide() : win.show();
});
tray.on('double-click', () => {
win.show();
});
}
app.whenReady().then(() => {
createTray();
});
const { app, Menu } = require('electron');
if (process.platform === 'darwin') {
const dockMenu = Menu.buildFromTemplate([
{
label: '新建窗口',
click: () => {
createWindow();
}
},
{
label: '设置',
click: () => {
console.log('打开设置');
}
}
]);
app.dock.setMenu(dockMenu);
}