| 123456789101112131415161718192021222324252627282930313233343536373839 |
- // 使用 require 避免 ESM 问题
- const { contextBridge, ipcRenderer } = require('electron');
- // 暴露给渲染进程的 API
- contextBridge.exposeInMainWorld('electronAPI', {
- // 应用信息
- getAppVersion: () => ipcRenderer.invoke('get-app-version'),
- getPlatform: () => ipcRenderer.invoke('get-platform'),
- // 窗口控制
- minimizeWindow: () => ipcRenderer.send('window-minimize'),
- maximizeWindow: () => ipcRenderer.send('window-maximize'),
- closeWindow: () => ipcRenderer.send('window-close'),
- // 文件操作
- selectFile: (options?: { filters?: { name: string; extensions: string[] }[] }) =>
- ipcRenderer.invoke('select-file', options),
- selectFolder: () => ipcRenderer.invoke('select-folder'),
- // 通知
- showNotification: (title: string, body: string) =>
- ipcRenderer.send('show-notification', { title, body }),
- });
- // 类型声明
- declare global {
- interface Window {
- electronAPI: {
- getAppVersion: () => Promise<string>;
- getPlatform: () => Promise<string>;
- minimizeWindow: () => void;
- maximizeWindow: () => void;
- closeWindow: () => void;
- selectFile: (options?: { filters?: { name: string; extensions: string[] }[] }) => Promise<string | null>;
- selectFolder: () => Promise<string | null>;
- showNotification: (title: string, body: string) => void;
- };
- }
- }
|