/* * @Date: 2025-05-06 17:45:54 * @LastEditors: 陈子健 * @LastEditTime: 2025-05-23 14:14:05 * @FilePath: /mac-lyric-vue/electron-app/preload.js */ const { contextBridge, ipcRenderer } = require('electron'); // 暴露安全的API供渲染进程使用 contextBridge.exposeInMainWorld('electronAPI', { // 获取后端URL getBackendUrl: () => ipcRenderer.invoke('get-backend-url'), // 获取前端URL getFrontendUrl: () => ipcRenderer.invoke('get-frontend-url'), // 处理窗口拖动 - 改为使用原生拖动 startWindowDrag: () => { ipcRenderer.send('start-window-drag'); }, // 鼠标悬停状态变化事件 onMouseHoverChange: (callback) => { // 清除旧的监听器,避免重复 ipcRenderer.removeAllListeners('mouse-hover-change'); // 添加新的监听器 ipcRenderer.on('mouse-hover-change', (_, isHovering) => callback(isHovering)); // 返回一个清理函数 return () => { ipcRenderer.removeAllListeners('mouse-hover-change'); }; }, // 监听窗口锁定状态变化事件 onToggleLockWindow: (callback) => { ipcRenderer.removeAllListeners('toggle-lock-window'); ipcRenderer.on('toggle-lock-window', (_, isLocked) => callback(isLocked)); return () => { ipcRenderer.removeAllListeners('toggle-lock-window'); }; }, // 保持窗口的锁定状态 setWindowLockState: (isLocked) => { ipcRenderer.send('set-window-lock-state', isLocked); }, // 渲染close window setCloseWindowState: (showWindow) => { ipcRenderer.send('set-close-window-state', showWindow); }, // 监听删除歌词事件 onDeleteCurrentLyrics: (callback) => { ipcRenderer.on('delete-current-lyrics', () => { callback(); }); }, // 监听主窗口数据 onMainWindowData: (callback) => { ipcRenderer.on('main-window-data', (_, data) => { callback(data); }); }, // 监听获取主窗口数据请求 onGetMainWindowData: (callback) => { ipcRenderer.on('get-main-window-data', () => { callback(); }); }, // 发送数据到搜索窗口 sendToSearchWindow: (data) => { ipcRenderer.send('send-to-search-window', data); }, closeSearchWindow: () => ipcRenderer.send('close-search-window'), // 简化的语言设置API getLanguage: () => ipcRenderer.invoke('get-language'), setLanguage: (lang) => ipcRenderer.invoke('set-language', lang), onLanguageChange: (callback) => { ipcRenderer.removeAllListeners('change-language'); ipcRenderer.on('change-language', (_, lang) => callback(lang)); return () => { ipcRenderer.removeAllListeners('change-language'); }; }, // 发送语言切换事件 changeLanguage: (lang) => { ipcRenderer.send('change-language', lang); } });