Appearance
窗口交互
用来实现一些跟 uTools 窗口相关的功能
utools.hideMainWindow(isRestorePreWindow)
执行该方法将会隐藏 uTools 主窗口,包括此时正在主窗口运行的插件应用,分离的插件应用不会被隐藏。
类型定义
ts
function hideMainWindow(): boolean;
function hideMainWindow(isRestorePreWindow: boolean): boolean;
isRestorePreWindow
表示是否焦点回归到前面的活动窗口,默认 true
示例代码
ts
utools.hideMainWindow();
utools.showMainWindow()
执行该方法将会显示 uTools 主窗口,包括此时正在主窗口运行的插件应用。
类型定义
ts
function showMainWindow(): boolean;
示例代码
ts
utools.showMainWindow();
utools.setExpendHeight(height)
设置插件应用在主窗口中的高度,单位为像素。
类型定义
ts
function setExpendHeight(height: number): boolean;
示例代码
ts
utools.setExpendHeight(300);
utools.setSubInput(onChange[, placeholder[, isFocus]])
设置子输入框,进入插件应用后,原本 uTools 的搜索条主输入框将会变成子输入框,子输入框可以为插件应用所使用。
类型定义
ts
function setSubInput(onChange: (details: { text: string }) => void): boolean;
function setSubInput(
onChange: (details: { text: string }) => void,
placeholder: string
): boolean;
function setSubInput(
onChange: (details: { text: string }) => void,
placeholder: string,
isFocus: boolean
): boolean;
onChange
: 输入框内容变化时的回调函数placeholder
: 输入框占位符isFocus
: 是否自动聚焦,默认为true
示例代码
ts
utools.setSubInput(({ text }) => {
console.log(text);
}, "搜索");
效果截图
utools.removeSubInput()
移除已经设置的子输入框,在插件应用切换到其他页面时可以重新设置子输入框为其所用。
类型定义
ts
function removeSubInput(): boolean;
示例代码
ts
utools.removeSubInput();
utools.setSubInputValue(value)
直接对子输入框的值进行设置。
类型定义
ts
function setSubInputValue(value: string): boolean;
示例代码
ts
utools.setSubInputValue("hello world");
utools.subInputFocus()
聚焦子输入框。
类型定义
ts
function subInputFocus(): boolean;
示例代码
ts
utools.subInputFocus();
utools.subInputBlur()
子输入框失去焦点,插件应用获得焦点
类型定义
ts
function subInputBlur(): boolean;
示例代码
ts
utools.subInputBlur();
utools.subInputSelect()
子输入框获得焦点并选中子输入框的内容
类型定义
ts
function subInputSelect(): boolean;
示例代码
ts
utools.subInputSelect();
utools.outPlugin([isKill])
退出插件的窗口,插件应用进入后台。
类型定义
ts
function outPlugin(): boolean;
function outPlugin(isKill:boolean): boolean; // 版本:>=5.2.0
isSkill
为true
时,退出插件的同时,会完全杀死插件进程。若为false
或者没有传递任何值时,则将插件退出到后台
- 版本:>=5.2.0
示例代码
ts
utools.outPlugin();
utools.redirect(label[, payload])
跳转到另一个插件应用,并可以携带参数,如果插件应用不存在,则跳转到插件应用商店进行下载。
类型定义
ts
function redirect(label: string | [string, string], payload?: any): boolean;
label
为string
时,传递插件名字。若传递数组,则第一个元素为插件名字,第二个元素为插件功能指令payload
为跳转时附带的参数,若为undefined
,则不附带任何参数
示例代码
ts
// 跳转到插件应用「聚合翻译」并翻译内容
utools.redirect(["聚合翻译", "翻译"], "hello world");
// 找到 “翻译” 指令,并自动跳转到对应插件应用
utools.redirect("翻译", "hello world");
// 跳转到插件应用「OCR 文字识别」并识别图片中文字
utools.redirect(["OCR 文字识别", "OCR 文字识别"], {
type: "img",
data: "data:image/png;base64,", // base64
});
// 跳转到插件应用「JSON 编辑器」查看 Json 文件
utools.redirect(["JSON 编辑器", "Json"], {
type: "files",
data: "/path/test.json", // 支持数组
});
utools.showOpenDialog(options)
弹出文件选择框
类型定义
ts
function showOpenDialog(options: OpenDialogOptions): string[] | undefined;
OpenDialogOptions
与ElectronshowOpenDialogSync#options
一致
示例代码
ts
const files = utools.showOpenDialog({
filters: [{ name: "plugin.json", extensions: ["json"] }],
properties: ["openFile"],
});
console.log(files);
utools.showSaveDialog(options)
弹出文件保存框
类型定义
ts
function showSaveDialog(options: SaveDialogOptions): string[] | undefined;
SaveDialogOptions
与ElectronshowSaveDialogSync#options
一致
示例代码
ts
utools.showSaveDialog({
title: "保存位置",
defaultPath: utools.getPath("downloads"),
buttonLabel: "保存",
});
utools.findInPage(text[, options])
在当前页面中查找文本
类型定义
ts
function findInPage(text: string, options?: FindInPageOptions): void;
FindInPageOptions
与ElectronwebContents.findInPage#options
一致
示例代码
ts
utools.findInPage("hello world");
utools.stopFindInPage(action)
停止查找,与findInPage
配合使用
类型定义
ts
function stopFindInPage(
action: "clearSelection" | "keepSelection" | "activateSelection"
): void;
action
:clearSelection
清除选中文本,keepSelection
保留选中文本,activateSelection
激活选中文本,默认值为clearSelection
示例代码
ts
utools.stopFindInPage("clearSelection");
utools.startDrag(filePath)
从插件中拖拽文件到其他窗口,拖拽产生一系列原生文件
类型定义
ts
function startDrag(filePath: string | string[]): void;
filePath
是文件路径,可以是文件路径数组
示例代码
ts
utools.startDrag("./test.txt");
utools.startDrag(["./test.txt", "./test2.txt"]);
utools.createBrowserWindow(url[, options][, callback])
创建一个浏览器窗口
类型定义
ts
function createBrowserWindow(
url: string,
options: BrowserWindowConstructorOptions
): BrowserWindow;
function createBrowserWindow(
url: string,
options: BrowserWindowConstructorOptions,
callback: Function
): BrowserWindow;
提示
url
必须是一个本地文件路径,并且为相对路径。options
参数参考 Electron 的 BrowserWindowConstructorOptions。注意:preload 需配置相对位置。callback
会在页面加载完成后被调用。BrowserWindow
由 uTools 定制,大部分属性参考 Electron 的 BrowserWindow。
示例代码
js
const ubWindow = utools.createBrowserWindow(
"test.html",
{
show: false,
title: "测试窗口",
webPreferences: {
preload: "preload.js",
},
},
() => {
// 显示
ubWindow.show();
// 置顶
ubWindow.setAlwaysOnTop(true);
// 窗口全屏
ubWindow.setFullScreen(true);
// 向子窗口传递数据
ubWindow.webContents.send("ping", "test");
// 执行脚本
ubWindow
.webContents
.executeJavaScript(
'fetch("https://jsonplaceholder.typicode.com/users/1").then(resp => resp.json())'
)
.then((result) => {
console.log(result); // Will be the JSON object from the fetch call
});
}
);
console.log(ubWindow);
js
// 在新建窗口的 preload.js 中接收父窗口传递过来的数据
const { ipcRenderer } = require("electron");
ipcRenderer.on("ping", (event, data) => {
console.log(data);
});
utools.sendToParent("pong", "hello world"); // 版本:>= 6.1.0
utools.sendToParent(channel[, ...args])
发送消息到父窗口
类型定义
ts
function sendToParent(channel: string, ...args: any[]): void; // 版本:>=6.1.0
示例代码
ts
// 通过 utools.createBrowserWindow 创建窗口的 javasript 调用
utools.sendToParent("channel", "hello", 123); // 版本:>= 6.1.0
utools.isDarkColors()
检测当前是否为深色模式
类型定义
ts
function isDarkColors(): boolean;
示例代码
ts
utools.onPluginEnter(({ code, type, payload }) => {
document.body.className = utools.isDarkColors() ? "dark-mode" : "";
});
utools.getWindowType()
获取当前窗口类型, 'main' 主窗口、'detach' 分离窗口、'browser' 由 createBrowserWindow
创建的窗口
类型定义
ts
function getWindowType(): "main" | "detach" | "browser";
示例代码
ts
utools.onPluginEnter(({ code, type, payload }) => {
if (utools.getWindowType() === "main") {
utools.showNotification("当前窗口为主窗口");
}
});