Handool基于Qt 5.15开发。
软件目前开放了搜索功能-脚本命令开发,可通过内置JS函数与系统进行交互。
脚本可通过软件内JS命令编辑器功能进行编辑开发测试,也可通过第三方软件编写后再在软件内测试。
APP开发功能将于后期开放,敬请期待。
命令开发共需实现三个函数
参数text为处理内容,如关键词为hex,则在搜索界面输入hex 55, 函数被调用时text的值均为55
同时会传入全局对象holder, holder提供对搜索结果项的处理
实例如下:
软件目前开放了搜索功能-脚本命令开发,可通过内置JS函数与系统进行交互。
脚本可通过软件内JS命令编辑器功能进行编辑开发测试,也可通过第三方软件编写后再在软件内测试。
APP开发功能将于后期开放,敬请期待。
命令开发共需实现三个函数
function matched(text) //匹配到关键词调用, 返回true时展示处理结果
function pressed(text) //搜索项被左键点击或确定时调用
function optioned(text) //搜索项被右键点击时调用
参数text为处理内容,如关键词为hex,则在搜索界面输入hex 55, 函数被调用时text的值均为55
同时会传入全局对象holder, holder提供对搜索结果项的处理
holder.title = "标题" //设置标题
holder.target = "描述" //设置描述。当为""时不展示描述项
holder.tag = "备注" //设置标签
holder.addNew() //新增一条搜索结果,仅一条结果时无需调用
holder.title = "我是第二条结果"
holder.target = "我是第二条描述"
实例如下:
useLib("plus.js") //引入js增强库,如replaceAll函数等
function matched(text) {
let expression = text.toLowerCase().replaceAll(" ", "")
if (expression.length === 0) {
holder.title = "进制转换"
holder.target = "例如: hex 15, hex 0xF, hex 0b1111"
return true
}
let format = 10
if (expression.startsWith("0x") || expression.startsWith("x") || expression.match(RegExp("[a-f]"))) format = 16
if (expression.startsWith("0b")) format = 2
expression = expression.replaceAll("0x", "").replaceAll("0b", "")
if (expression.startsWith("x")) expression = expression.substring(1)
let number = Number.parseInt(expression, format)
if (Object.is(number, NaN)) return false
if (number > 0xffffffffffff) return false
if (expression.length > 1) {
let numberCheck = Number.parseInt(expression.substring(0, expression.length - 1), format)
if (Object.is(numberCheck, NaN) || numberCheck === number) return false
}
if (format === 10) {
holder.title = number.toString(16)
holder.target = text + " = 0x" + holder.getTitle()
}
if (format === 16) {
holder.title = number
holder.target = text + " = " + holder.getTitle()
}
if (format === 2) {
holder.title = number.toString()
holder.target = text + " = " + holder.getTitle()
}
return true
}
function pressed() {
Native.copy(holder.keyboardModifiers === KeyboardModifier.NoModifier ? holder.title : holder.target)//复制文本
}
function optioned() {
let menu = new Menu(holder.view)//创建一个右键菜单
//添加一个菜单项,并实现菜单项点击时的操作
menu.addAction("复制").triggered.connect(function () {
Native.copy(holder.title)//复制标题
holder.hide()//隐藏搜索框
})
//添加一个菜单项,并实现菜单项点击时的操作
menu.addAction("复制全部", "Ctrl+Enter").triggered.connect(function () {
Native.copy(holder.target)//复制描述
holder.hide()//隐藏搜索框
})
menu.show()//显示菜单
}