UNPKG

rerumaccusamus

Version:

The meta-framework suite designed from scratch for frontend-focused modern web development.

174 lines (112 loc) 4.27 kB
--- sidebar_position: 1 --- # winService :::info 补充信息 * 窗口管理服务。 * 使用进程:[主进程](/docs/guides/features/electron/basic#主进程)。 ```ts import { winService } from '@modern-js/runtime/electron-main'; ``` ::: ## 实例方法 ### callBrowserWindow `winService.callBrowserWindow(receiver, funcName[, ...args])` #### 参数 - receiver:`number | string`,接收窗口 ID 或者窗口名。 - funcName:`string`,访问的服务的函数名。 - [args]:`any[]`,访问服务函数的参数。 #### 返回值 - `Promise<any>`,服务访问结果。 :::warning 警告 当 `receiver` 为窗口名,并且同名窗口打开多个,此时 `callBrowserWindow` 的返回值为数组,每一项表示每一个窗口的执行结果。 ::: ### broadCast `winService.broadcast(channel[,...args])` #### 参数 - channel:`string`,广播频道名。 - [args]:`any[]`,广播参数。 #### 返回值 - `void`。 给所有窗口在 `channel` 频道上发送消息。 ### getWindowById `winService.getWindowById(windowId)` #### 参数 - windowId:`number`,窗口 ID。 #### 返回值 - `object | undefined`,返回窗口对象。 根据窗口 ID 获取窗口对象。 ### getWindows `winService.getWindows()` #### 返回值 - `object[]`,返回窗口对象数组。 获取所有窗口对象。 ### sendTo `winService.sendTo(receiver,channel[,...args])` #### 参数 - receiver:`number | string`,接收窗口 ID 或者窗口名。 - channel:`string`,通信频道名。 - [args]:`any[]`,访问服务函数的参数。 #### 返回值 - `void`。 根据窗口名字或者窗口 ID 发送消息到 `channel` 频道。 ### createWindow `winService.createWindow(openConfig)` #### 参数 - openConfig:`object`,窗口配置。 - name:`string`,需要打开的窗口名。 - [options]:[`BrowserWindowConstructorOptions`](https://www.electronjs.org/zh/docs/latest/api/browser-window#new-browserwindowoptions),窗口的相关配置。 - [loadUrl]:`string`,加载路径。 - [addBeforeCloseListener]:`boolean`,同[`windowConfig#addBeforeCloseListener`](/docs/apis/runtime/electron/main-process/window-config),默认为 `false`。 - [hideWhenClose]:`boolean`,关闭窗口时,是否以隐藏代替关闭,默认为 `false`#### 返回值 - `object`,返回窗口对象。 打开窗口。 ### getWindowConfig `winService.getWindowConfig(name)` #### 参数 - name:`string`,窗口名。 #### 返回值 - `object | undefined`,窗口配置。 通过窗口名获得窗口配置。 ### closeWindowById `winService.closeWindowById(id[,options])` #### 参数 - id:`number`,窗口 ID。 - [options]:`object`,关闭模式。 - [closeMode]:`'close' | 'confirmOrClose'`,当 `closeMode=close` 时,会直接关闭,忽略回调。当 `closeMode=confirmOrClose`,如果有确认回调,会执行确认回调,默认为:`confirmOrClose`#### 返回值 - `void`。 根据窗口 ID 关闭窗口。 ### closeWindowByName `winService.closeWindowByName(name[,options])` #### 参数 - name:`string`,窗口名。 - [options]:`object`,关闭模式。 - [closeMode]:`'close' | 'confirmOrClose'`,当 `closeMode=close` 时,会直接关闭,忽略回调。当 `closeMode=confirmOrClose`,如果有确认回调,会执行确认回调,默认为:`confirmOrClose`#### 返回值 - `void`。 根据窗口名关闭窗口。 :::tip 提示 关于 closeMode,同上方 `closeWindowById`。 ::: ### getWindowByName `winService.getWindowByName(name)` #### 参数 - name:`string`,窗口名。 #### 返回值 - `object[]`,窗口对象数组。 根据窗口名获得其对应配置。 ### 示例 ```ts // in main process import { winService } from '@modern-js/electron-runtime'; ... // 向窗口 main 发送消息 `{data: "hello"}` 到 `msgChannel` 频道。 winService.call('main', 'msgChannel', {data: "hello"}); // 向所有窗口发送消息 `{data: "hello"}` 到 `msgChannel` 频道。 winService.broadCast('msgChannel', {data: "hello"}); ``` :::warning 警告 你可以直接引用各种服务,比如:winService,但使用必须在 `await runtime.init()` 之后,这会初始化所有服务。 :::