Skip to content

交互事件 API

你可以根据需要,事先传递一些回调函数给这些事件,uTools 会在对应事件被触发时调用它们。

utools.onPluginEnter(callback)

进入插件应用时,uTools 将会主动调用这个方法。

类型定义

ts
function onPluginEnter(callback: (action: PluginEnterAction) => void): void;
PluginEnterAction 类型定义
ts
interface PluginEnterAction {
  code: string;
  type: "text" | "img" | "file" | "regex" | "over" | "window";
  payload: string | MatchFile[] | MatchWindow;
  from: "main" | "panel" | "hotkey" | "reirect";
  option?: {
    mainPush: boolean;
  };
}

字段说明

  • code

    plugin.json 配置的 feature.code

  • type

    plugin.json 配置的 feature.cmd.type

  • payload

    feature.cmd.type 对应匹配的数据

  • option

    feature.mainPush 设置为 ture ,且当用户选择 onMainPush 返回的选项进入时

  • from

    根据不同触发来源提供:

    • main: 主面板
    • panel: 超级面板
    • hotkey: 快捷键
    • reirect: 重定向

    版本:>=5.2.0

MatchFile 类型定义
ts
interface MatchFile {
  isFile: boolean;
  isDirectory: boolean;
  name: string;
  path: string;
}
MatchWindow 类型定义
ts
interface MatchWindow {
  id: number;
  class: string;
  title: string;
  x: number;
  y: number;
  width: number;
  height: number;
  appPath: string;
  pid: number;
  app: string;
}

示例代码

ts
utools.onPluginEnter(({ code, type, payload, option, from }) => {
  console.log("用户进入插件应用", code, type, payload);
  console.log("用户inrush插件的方式:", from);
});

utools.onPluginOut(callback)

插件应用退出时触发

类型定义

ts
function onPluginOut(callback: (processExited: boolean) => void): void;

processExitedtrue 时,表示插件应用完全退出

示例代码

ts
utools.onPluginOut((processExited) => {
  if (processExited) {
    console.log("用户退出插件应用");
  } else {
    console.log("插件应用被隐藏");
  }
});

utools.onMainPush(callback, onSelect)

推送内容到搜索面板,并设置从搜索面板启动插件时的回调

注意

向搜索面板推送消息(需要设置 feature.mainPush 设置为 true),详情请参考 plugin.json#feature.mainPush

类型定义

ts
function onMainPush(
  callback: (action: MainPushAction) => MainPushResult[],
  onSelect: (action: PluginEnterAction) => boolean | undefined
): void;
MainPushAction 类型定义
ts
interface MainPushAction {
  code: string;
  type: "text" | "img" | "file" | "regex" | "over" | "window";
  payload: string | MatchFile[] | MatchWindow;
}

字段说明

  • code

    plugin.json 配置的 feature.code

  • type

    plugin.json 配置的 feature.cmd.type

  • payload

    feature.cmd.type 对应匹配的数据,MatchFileMatchWindow 类型参考 onPluginEnter

MainPushResult 类型定义
ts
interface MainPushResult {
  icon: string;
  title: string;
  text: string;
}

字段说明

  • icon

    推送消息的图标

  • title

    推送消息的标题

  • text

    推送消息的内容

示例代码

ts
function callback({ code, type, payload }) {
  return [
    {
      icon: "icon.png",
      text: "选项1",
      title: "help text",
    },
    {
      text: "选项2",
      anyField: "xxxx",
    },
  ];
}
function selectCallback({ code, type, payload, option }) {
  if (option.xxx) {
    // 返回 true 表示需要进入插件应用处理
    return true;
  }
  // 不进入插件应用 "执行粘贴文本"
  utools.hideMainWindowPasteText(option.text);
}
utools.onMainPush(callback, selectCallback);

utools.onPluginDetach(callback)

用户对插件应用进行分离操作时触发

类型定义

ts
function onPluginDetach(callback: () => void): void;

示例代码

ts
utools.onPluginDetach(() => {
  console.log("插件分离");
});

utools.onDbPull(callback)

当此插件应用的数据在其他设备上被更改后同步到此设备时触发,数据同步相关操作请参考 数据同步