electron 任务栏提示和托盘闪烁

本文详细介绍了如何使用Electron框架在任务栏创建提示以及实现托盘图标闪烁,帮助开发者提升桌面应用的用户体验。通过示例代码展示了具体的实现步骤,包括设置通知事件、触发托盘闪烁等关键功能。
摘要由CSDN通过智能技术生成
// 引入electron并创建一个Browserwindow
const {
    app, BrowserWindow, globalShortcut, Tray, Menu, ipcMain, dialog } = require('electron')
const path = require('path')
const url = require('url')

const pathName = path.join(__dirname, 'demo/javascript/src/NiuniuCapture.exe')
// 保持window对象的全局引用,避免JavaScript对象被垃圾回收时,窗口被自动关闭.
let mainWindow
let tray = null;
var count = 0, timer = null;
var count1 = 0, timer1 = null;
//设置快捷键
app.on('ready', function () {
   
  globalShortcut.register('ctrl+alt+o', function () {
   
    mainWindow.webContents.send('main-process-messages', 'StartCapture')
  });

  // var t1=setInterval(function(){
   
  //   if(!mainWindow.isMinimized()){
   
  //     clearInterval(timer);
  //   }
  // })
});

function createWindow() {
   
  //创建浏览器窗口,宽高自定义
  mainWindow = new BrowserWindow({
   
    width: 1024, height: 700, minWidth: 712, minHeight: 505, maximizable: true, icon: '/icon.ico', backgroundColor: '#ffffff', frame: false, show: false
  })
  mainWindow.once('ready-to-show', () => {
   
    mainWindow.show()
  })
  //加载应用-----  electron-quick-start中默认的加载入口
  mainWindow.loadURL(url.format({
   
    pathname: path.join(__dirname, 'index.html'),
    protocol: 'file:',
    slashes: true
  }
以下是React Electron关闭Windows和Mac托盘逻辑代码示例: ```javascript const { app, Tray, Menu, BrowserWindow } = require('electron'); class App extends Component { constructor(props) { super(props); this.state = { tray: null, window: null, }; } componentDidMount() { // 创建系统托盘 const tray = new Tray('/path/to/tray_icon.png'); this.setState({ tray }); // 创建托盘菜单 const contextMenu = Menu.buildFromTemplate([ { label: '显示窗口', click: () => { if (this.state.window) { this.state.window.show(); } else { this.createWindow(); } }, }, { label: '退出', click: () => { app.quit(); }, }, ]); // 设置托盘菜单 tray.setContextMenu(contextMenu); // 创建窗口 this.createWindow(); } createWindow() { // 创建主窗口 const window = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true, }, }); // 加载应用程序的HTML文件 window.loadURL(`file://${__dirname}/index.html`); // 监听窗口关闭事件 window.on('close', (event) => { event.preventDefault(); window.hide(); }); this.setState({ window }); } componentWillUnmount() { // 从系统托盘中移除 this.state.tray.destroy(); } render() { return <div>{/* 应用程序内容 */}</div>; } } ``` 上述代码中,通过 `Tray` 类创建系统托盘,并使用 `Menu` 类创建托盘菜单。在 `MenuItem` 的 `click` 回调函数中,可以处理窗口显示和退出应用程序的逻辑。 在 `createWindow` 方法中,通过 `BrowserWindow` 类创建主窗口,并通过 `window.on('close', ...)` 监听窗口关闭事件。在关闭事件中,通过 `event.preventDefault()` 阻止窗口的默认行为,并将窗口隐藏。 在组件将要销毁时,通过 `tray.destroy()` 方法从系统托盘中移除托盘图标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值