一、前言
本文的主要目的是剖析一下utools工具是如何能用拼音搜索到各种系统设置并打开的。
不过在此之间,也简单介绍一下最近我在开发一款类utools的软件,目前效果如下:
名字暂定为KuTools
,就是图标还有点难看,后面应该还要更换,名字后续如果有更好的想法可能也会更换。
当然,并不仅仅只是仿照utools
,毕竟那就没竞争力了,我的目标是直接将一些强大软件的功能都集成到我的这个软件中来,比如上图中的Markdown
工具,就是本软件的第一个功能,其目标是对标Typora
,但争取会比Typora
更加好用!
同时后续也还会继续集成Everything
、Snipaste
乃至chatgpt
等强大软件的功能。
不过显然,这个工作量是很大的,仅仅是一个markdown
编辑器的基本功能,我就已经写了好几天了,目前成品如下:
还有就是等后续熟悉了Tauri框架之后,再尝试一下看能不能也加一个插件系统,想要做的事实在是太多了,平时还要花时间写文章,时间根本不够用啊!。
二、系统功能搜索
回到本文的正题,由于开发markdown编辑器的工作量太大,只能慢慢来,所以就想着能不能先试着完成一些utools工具的基本功能。
比如可以用拼音首字母搜索系统设置:
不仅如此,它还能在程序中直接将其打开!看着简单,但突然让我来实现的话,还是有点懵的。
最后花费了好一会,还是让我找到了其原理。
windows系统中有一个叫做ms-settings
的命令,通过在其后添加一些名字,被官方称为URL
,就可以直接通过命令打开了。
比如可以直接在控制台输入下面的命令打开电脑的设置:
start ms-settings:
所以我们如果想要在程序中打开某一个系统设置,就可以通过这种方式打开,比如C/C++中就可以使用system
函数执行系统命令。
更多设置命令可以参考官方文档:Launch the Windows Settings app
至于程序中的图标,是其开发者自己绘制再集成到程序中的,可以将utools安装目录下的resource/app.asar
文件解压就能看到:
哎,使用Electron框架开发的弊端就在于此,别人可以直接拿到你的开发资源与代码。
只不过它的代码做了混淆,很难看,但并非不能分析,只需要在其启动代码中写上一个开发调试器的代码,重新打包,就能运行软件动态分析其工作逻辑了。
不过这一过程肯定也是繁琐的,也正因这种种的原因,我的这个程序使用的是tauri框架进行的开发,兼容问题以后总会慢慢解决的。
最后还有其拼音首字母搜索的功能,其实一般都是有相应开源库实现的。
比如Tauri中我希望充分利用rust的性能优势,使用rust来进行拼音首字母匹配,就可以使用库:rust-pinyin
将文本转换为汉字,再使用正则表达式进行匹配。
或者还有js的xmflswood/pinyin-match库,更加方便,直接自带匹配功能。