08.《Electron 跨平台开发实战》- chapter08-深入集成(shell模块)、动态启动菜单项
目录
在渲染进程(UI界面)中使用shell模块
//在文件管理器中打开
const { ..., shell } = require(‘electron‘);
const showFile = () => {
if (!filePath) { return alert(‘This file has not been saved to the file system.‘); }
shell.showItemInFolder(filePath);
};
//使用默认程序打开
const openInDefaultApplication = () => {
if (!filePath) { return alert(‘This file has not been saved to the file system.‘); }
//electron-9.x 已经不存在了
shell.openItem(fullPath)
};在应用菜单中使用 shell 模块
- applicationMenu.js
{ type: ‘separator‘ },
{
label: ‘Show File‘,
enabled: hasFilePath,
click(item, focusedWindow) {
if (!focusedWindow) {
return dialog.showErrorBox(
‘Cannot Show File\‘s Location‘,
‘There is currently no active document show.‘
);
}
focusedWindow.webContents.send(‘show-file‘);
},
},
{
label: ‘Open in Default Application‘,
enabled: hasFilePath,
click(item, focusedWindow) {
if (!focusedWindow) {
return dialog.showErrorBox(
‘Cannot Open File in Default Application‘,
‘There is currently no active document to open.‘
);
}
focusedWindow.webContents.send(‘open-in-default‘);
},
},- renderer.js
ipcRenderer.on(‘show-file‘, showFile); ipcRenderer.on(‘open-in-default‘, openInDefaultApplication);
在上下文菜单中使用 shell 模块
- renderer.js
//上下文菜单
const markdownContextMenu = Menu.buildFromTemplate([
...
{
label: ‘Show File in Folder‘,
click: showFile,
enabled: !!filePath
},
{
label: ‘Open in Default‘,
click: openInDefaultApplication,
enabled: !!filePath
},
{ type: ‘separator‘ },
...
]);
markdownView.addEventListener(‘contextmenu‘, (event) => {
event.preventDefault();
markdownContextMenu.popup();
});禁用菜单项
相关推荐
laisean 2020-11-11
zhangjie 2020-11-11
大牛牛 2020-10-30
firefaith 2020-10-30
liguojia 2020-10-20
wangzhaotongalex 2020-10-20
CARBON 2020-10-20
JohnYork 2020-10-16
xiaonamylove 2020-10-16
Julyth 2020-10-16