Loading

Wox插件开发(C#)

一开始准备用Python写的,但是给Python的API不够全,一些功能无法实现或者实现起来很麻烦,就换成官方推荐的C#了。官方文档写得不是很齐全,幸运的是可以参考官方的开源代码。

虽然以前没有写过C#,但是写了几年Java,稍微试了一下,感觉C#和Java的相似度还是很高的,开发过程中语言层面也没有造成很大的问题。

开发环境

Visual Studio 2019

工程设置

框架:.NET Framework 4.7.2

输出类型:类库

项目代码文件

1. Main.cs

插件的入口,用来给Wox进行调用。

实现接口

Wox.Plugin.IPlugin

响应关键词查询,返回对应的结果集。

实现方法

//插件初始化的钩子函数,可以保存插件上下文变量,载入设置文件(自行定义实现)
public void Init(PluginInitContext context);

//query变量中有用户输入的关键字,通过用户输入的关键字可以在程序中决定返回的结果集
public List<Result> Query(Query query);

重要类型说明

PluginInitContext context

  1. context.CurrentPluginMetadata.PluginDirectory:获取插件的安装目录
  2. context.API.ChangeQuery:改变查询关键字
  3. context.API.ShowMsg:在桌面右下角显示信息

Query query

  1. query.ActionKeyword:插件的触发关键字
  2. query.Search:用户输入的查询关键字
  3. query.RawQuery:触发关键字+查询关键字

Result

{
    Title = _tip.text,
    SubTitle = _tip.time,
    IcoPath = "Images\\item.png",
    ContextData = new ItemData() {//自定义数据类型,交给IContextMenu使用
        action_keyword = query.RawQuery
    },
    Action = e => {//选择后触发的操作
        Clipboard.SetDataObject(_tip.text);
        return true;
    }
}

示例

Wox.Plugin.IContextMenu

增加响应结果的右键菜单选项

实现方法

//定义选项结果集加载的右键菜单
public List<Result> LoadContextMenus(Result selectedResult);

Wox.Plugin.ISettingProvider

提供插件的设置界面

//返回设置界面
public Control CreateSettingPanel();

2. SettingControl.xaml SettingControl.xaml.cs

用来实现对可视化界面元素的布局以及事件的响应。文件名称任意,关键是要实现UserControl类,并在主类中的CreateSettingPanel()方法中创建对象并返回。

需要注意的是xaml.cs文件中需要调用InitializeComponent()方法。实不相瞒,这个点我差不多浪费了2天的时间。

插件配置文件

跟着官方的教程就好了。

图标文件

推荐网站:easyicon

项目代码

随手记

欢迎参考使用。

posted @ 2020-02-21 09:26  enrio  阅读(788)  评论(0编辑  收藏  举报