Files
QZMusic_PC-pre/electron/preload.ts

29 lines
1.3 KiB
TypeScript
Raw Normal View History

import { contextBridge, ipcRenderer } from 'electron'
contextBridge.exposeInMainWorld('electronAPI', {
// 窗口控制
minimizeWindow: () => ipcRenderer.send('window-minimize'),
maximizeWindow: () => ipcRenderer.send('window-maximize'),
closeWindow: () => ipcRenderer.send('window-close'),
isMaximized: () => ipcRenderer.invoke('window-is-maximized'),
// MPV 控制 (Renderer -> Main)
mpvLoad: (url: string,autoPlay: boolean = true) => ipcRenderer.send('mpv-load', url, autoPlay),
mpvPlay: () => ipcRenderer.send('mpv-play'),
mpvPause: () => ipcRenderer.send('mpv-pause'),
mpvSeek: (time: number) => ipcRenderer.send('mpv-seek', time),
mpvSetVolume: (volume: number) => ipcRenderer.send('mpv-volume', volume),
// MPV 事件 (Main -> Renderer)
onMpvTimeUpdate: (callback: (time: number) => void) =>
ipcRenderer.on('mpv-time-update', (_, time) => callback(time)),
onMpvDuration: (callback: (duration: number) => void) =>
ipcRenderer.on('mpv-duration', (_, duration) => callback(duration)),
onMpvPlayState: (callback: (isPlaying: boolean) => void) =>
ipcRenderer.on('mpv-play-state', (_, isPlaying) => callback(isPlaying)),
onMpvEnded: (callback: () => void) =>
ipcRenderer.on('mpv-ended', () => callback()),
})