preload.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { ipcRenderer, contextBridge } from 'electron'
  2. // --------- Expose some API to the Renderer process ---------
  3. contextBridge.exposeInMainWorld('ipcRenderer', {
  4. on(...args: Parameters<typeof ipcRenderer.on>) {
  5. const [channel, listener] = args
  6. return ipcRenderer.on(channel, (event, ...args) => listener(event, ...args))
  7. },
  8. off(...args: Parameters<typeof ipcRenderer.off>) {
  9. const [channel, ...omit] = args
  10. return ipcRenderer.off(channel, ...omit)
  11. },
  12. send(...args: Parameters<typeof ipcRenderer.send>) {
  13. const [channel, ...omit] = args
  14. return ipcRenderer.send(channel, ...omit)
  15. },
  16. invoke(...args: Parameters<typeof ipcRenderer.invoke>) {
  17. const [channel, ...omit] = args
  18. return ipcRenderer.invoke(channel, ...omit)
  19. },
  20. // You can expose other APTs you need here.
  21. // ...
  22. })
  23. // 暴露窗口控制API
  24. contextBridge.exposeInMainWorld('electronAPI', {
  25. exit: () => ipcRenderer.send('exit-app'),
  26. toggleFullScreen: (isFullScreen: boolean) => ipcRenderer.send('toggle-fullscreen', isFullScreen),
  27. toggleDevTools: () => ipcRenderer.send('toggle-dev-tools'),
  28. loadAppsJson: () => ipcRenderer.invoke('load-apps-json'),
  29. loadDefaultAppsJson: () => ipcRenderer.invoke('load-default-apps-json'),
  30. saveAppsJson: (appsJson: string) => ipcRenderer.send('save-apps-json', appsJson),
  31. openWindow: (url: string) => ipcRenderer.send('open-window', url),
  32. loadChildUrl: (url: string, aspectRatio: number) => ipcRenderer.send('load-child-url', url, aspectRatio),
  33. toggleChildSide: (isSideOen: boolean) => ipcRenderer.send('toggle-child-side', isSideOen),
  34. showConfig: () => ipcRenderer.send('show-config'),
  35. showAbout: () => ipcRenderer.send('show-about'),
  36. })