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(); });
禁用菜单项
相关推荐
tianhuak 2020-11-24
huha 2020-10-16
lianshaohua 2020-09-23
laisean 2020-11-11
zhangjie 2020-11-11
大牛牛 2020-10-30
firefaith 2020-10-30
liguojia 2020-10-20
wangzhaotongalex 2020-10-20
以梦为马不负韶华 2020-10-20
CARBON 2020-10-20
彼岸随笔 2020-10-20
lianshaohua 2020-10-20
yutou0 2020-10-17
JohnYork 2020-10-16
xiaonamylove 2020-10-16
Julyth 2020-10-16
applecarelte 2020-10-16
ourtimes 2020-10-16