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
context.CurrentPluginMetadata.PluginDirectory
:获取插件的安装目录context.API.ChangeQuery
:改变查询关键字context.API.ShowMsg
:在桌面右下角显示信息
Query query
query.ActionKeyword
:插件的触发关键字query.Search
:用户输入的查询关键字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
项目代码
欢迎参考使用。