简单传递

操作方式:

  • 输入动作关键词,找到动作后按Tab键选定动作
  • 输入要传递给动作的参数,按回车运行动作。

普通搜索传递参数.gif
在动作中:

  • 可以通过 {quicker_in_param} 变量读取输入的参数。
  • 也可以在“获取选中的文本”模块中开启“如果为动作传递了参数,使用参数值作为获取的结果”选项,使动作既可以使用普通操作方式(选中文本后运行动作),也可以直接在搜索框里输入要操作的文本。

实时搜索

以下内容基于版本1.25.0。
在搜索框输入内容时调用动作并传入参数 search:搜索词 。根据动作返回的内容生成结果条目。
示例动作
实时搜索.gif

实现步骤

1)在动作中开启支持实时搜索的选项。

image.png

2)判断如果是否为搜索框传入的参数

如果是实时搜索传参,则对搜索内容进行处理并返回结果。
表达式:**$=** **{quicker_in_param}**.**StartsWith**("search:")
image.png
image.png

3) 返回搜索结果数据

目前支持两种格式的返回数据:多行文本格式、JSON数据格式。

A. 多行文本格式

image.png
每行输出一个结果选项。
[图标]文字(描述文字)|operation=选择选项后的操作&data=要操作的值的URL编码

  • 图标格式与“用户选择”“文本窗口菜单”等位置一样。
  • |后面的内容需要是合法的querystring,因此data数据通常需要进行url编码。
  • operation表示选择选项后执行的操作类型。
  • data:结果数据的内容。
  • datatype:可选,指定data数据的内容类型。可选值“path”或“text”。当指定为path时,Quicker会自动给搜索结果项添加右键菜单:
    image.png
  • menu:可选,URL编码后的自定义菜单项数据。格式与动作右键菜单相同。点击右键菜单时,将使用menu:菜单项的值:结果项data 作为参数调用动作。
    image.png

B. JSON数据格式

返回数据为C#对象CustomSearchResult的JSON序列化。类的定义请参考这里的代码:https://gist.github.com/cuiliang/8475a0b5420a78bfff52c8030450329a

CommonOperationItem 类将作为一个通用类用于更多场景的数据传输。
在这里,它的Children属性用于存储结果项的右键菜单。

  1. {
  2. "Items": [
  3. {
  4. "Score": 80, // 批量程度
  5. "NoHide": false, // 选择选项后是否自动隐藏搜索框。 仅在结果项用于继续触发搜索框时使用,以避免搜索框闪烁。
  6. "Title": "结果项标题",
  7. "Description": "结果项描述",
  8. "Icon": "fa:Light_Cog", // 主图标
  9. "SecondaryIcon": "fa:Solid_History", // 角标
  10. "Data": "内容数据",
  11. "DataType": "text",
  12. "Operation": null, // 无意义
  13. "Action": null, // 无意义
  14. "IsSeparator": false, // 无意义
  15. "ExtraData": null, // 用于传递额外数据的词典
  16. "Children": [ // 子项数据,这里用于存储额外的右键菜单项
  17. {
  18. "Icon": "fa:Light_Cog", //菜单图标
  19. "Title": "菜单项1", // 菜单标题
  20. "Data": "settings", // 菜单KEY
  21. "Description": "tooltip", // 菜单提示
  22. "DataType": null,
  23. "Operation": null,
  24. "Action": null,
  25. "IsSeparator": false, // 是否为分割线
  26. "ExtraData": null,
  27. "Children": null
  28. }
  29. ]
  30. },
  31. ...
  32. ]
  33. }

也可通过表达式直接返回CustomSearchResult类型的对象:

  1. $=new CustomSearchResult(){
  2. Items = new List<CustomSearchResultItem>(){
  3. new CustomSearchResultItem(){
  4. Title = "结果项标题",
  5. Icon = "fa:Light_Cog",
  6. SecondaryIcon = "fa:Light_history",
  7. DataType = "text",
  8. Data = "Hello World",
  9. //.....其他属性,可以通过补全查看...
  10. }
  11. }};

通过面板或快捷键触发动作时进入搜索模式

如果动作的主要功能为实时搜索,可能会希望通过快捷键直接启动搜索框并使用这个动作开始搜索。
可以在动作中增加“Quicker操作”模块,类型选择“使用当前动作进行实时搜索”操作类型。
image.png
在动作中可以使用这样的判断过程:

  • 如果动作参数以 search: 开始,表示正在搜索框中进行实时搜索。此时处理搜索内容并返回结果即可。
  • 如果动作参数为空,表示是通过其他方式启动动作,可以使用上述模块开启搜索模式。

image.png

如何调试实时搜索

可以另外创建一个组合动作,在其中使用“运行或停止其它动作”模块。
image.png