当前位置: 首页 > news >正文

electron+vue——托盘图标及菜单实现 - 前端

效果:

AF6DCF89-67ED-404d-AC0C-18BD770CDF03

 我的项目结构:

image

 background.js:

"use strict";
import { app, BrowserWindow, Menu, Tray, nativeImage } from "electron";
import * as path from "path";
const fs = require("fs");let mainWindow = null; // 窗口
let tray = null; // 托盘// 获取图标路径
function getIconPath() {let iconPath = "";const iconFile = "icon.ico"; // 图标文件名// 判断是否在打包模式if (app.isPackaged) {// 打包模式iconPath = path.join(process.resourcesPath, "icons", iconFile); // 路径根据自身情况调整} else {// 开发模式const projectRoot = path.join(__dirname, ".."); // __dirname 指向 dist_electron,但资源在项目根目录,所以..指向上一级iconPath = path.join(projectRoot, "icons", iconFile);}// 检查文件是否存在if (fs.existsSync(iconPath)) {console.log("图标文件存在:", iconPath);return iconPath;} else {console.error("图标文件不存在:", iconPath);// 返回一个默认图标路径或nullreturn null;}
}function createWindow() {// 创建浏览器窗口mainWindow = new BrowserWindow({// 其他icon: getIconPath(), // 本地启动图标
  });
}// 创建系统托盘图标和菜单
function createTray() {// 创建图标const iconPath = getIconPath();const icon = nativeImage.createFromPath(iconPath);// 调整图标大小(可选)icon.resize({ width: 16, height: 16 });tray = new Tray(icon);// 创建上下文菜单const contextMenu = Menu.buildFromTemplate([{label: "显示",click: () => {mainWindow.show();},},{label: "隐藏",click: () => {mainWindow.hide();},},{label: "退出",click: () => {mainWindow.destroy();},},]);tray.setContextMenu(contextMenu); // 设置托盘菜单tray.setToolTip("测试应用"); // 设置托盘图标的提示文本// 托盘图标右键事件(可选)tray.on("right-click", () => {tray.popUpContextMenu(); // 弹出托盘菜单
  });
}// 主进程准备完毕
app.on("ready", async () => {createWindow();createTray();
});

vue.config.js:

const appName = "测试应用";
module.exports = {pluginOptions: {electronBuilder: {builderOptions: {artifactName: "${productName}.${ext}", // 打包生成的安装包名称,默认会有 "Setup ${version}" 后缀appId: `com.alpha.${appName}.app`, // 应用的唯一标识符productName: appName, // 应用名称
        win: {icon: "icons/icon.ico",target: [{target: "nsis",arch: ["x64", "ia32"], // 兼容32位
            },],},// 关键,确保打包后图标文件存在于运行时可访问的位置
        extraResources: [{from: "icons",to: "icons",filter: ["**/*"],},],},},},
};

 

http://www.jsqmd.com/news/60857/

相关文章:

  • NVIDIA CUDA-X 库
  • 今年广东自习室加盟代理 优质品牌推荐谁?
  • 全场景通信工业级可编程工控机ECM50-A06方案介绍
  • 2025年12月八大重金属检测仪、成分分析仪、光谱仪、ROHS检测仪、镀层测厚仪厂家推荐榜单及选购指南
  • 美国留学申请文书创新权威认证榜单!谁是实力榜首?
  • 串口关键字抓取
  • 奇奇怪怪的特性
  • postgres json数据处理
  • smart_IO
  • 2025年12月振动时效机TOP3实力厂商新盘点:技术适配与服务特色双视角
  • 2025年中国十大护眼照明品牌推荐:口碑好的声控护眼灯有哪些
  • 2025重质碳酸钙行业TOP5权威推荐:鼎成钙业,甄选企业助
  • 2025 低投入靠谱自习室加盟代理推荐
  • 2025年广东回收基恩士测量仪品牌权威榜单:广东回收基恩士光电开关/广东回收基恩士控制器/广东回收传感器渠道精选
  • 2025博士申请套磁策略成功率榜单:谁的成功率最高?
  • 八大质量管理核心工具
  • 2025年12月人行通道闸机厂家最新实力TOP榜:速通门、摆闸、转闸、单向门选择指南
  • 深入解析:2025-11-07 ZYZ28-NOIP模拟赛-Round3 hetao1733837的record
  • 2025年沥青贴缝带生产厂家权威推荐榜单:6cm贴缝带‌/自粘式贴缝带‌/立面贴缝带‌源头厂家精选
  • 博士留学中介全奖 Offer 决胜局:谁才是真高手?
  • MATLAB实现:基于博弈论的全双工系统无线资源分配
  • 叶轮加工行业十大头部企业市场占有率排名
  • 美国留学录取决胜局:谁的 Offer 含金量足?
  • 美国留学申请策略巅峰对决:机构谁的布局最精妙?
  • 云主机带宽与传输速度的关系
  • 2025年防落梁装置施工实力厂家权威推荐榜单:防落梁装置防落梁挡块‌/箱梁防落梁装置‌/连续梁防落梁装置‌源头厂家精选
  • 2025年武汉装修辅材平台排行榜,伟星大口径管/知名管/系列
  • 2025年AI自习室加盟推荐:AI自习室加盟风险与选择建议
  • 在windows平台上通过ssh-agent实现git凭证持久化
  • 南京留学中介大比拼:谁的性价比与服务更胜一筹?