因为有趁手的工具,这几天把很多书的索引都做成书签了,方便查询。用着用着发现了一个问题,一个一个搜索电子书的书签太费事了。就想着有没有那种可以同时搜索多个电子书书签并返回结果的程序?
有点类似于拿电子书书签当词条的词典软件了。
顺便推一下刚做好的《标准日语语法》:
因为有趁手的工具,这几天把很多书的索引都做成书签了,方便查询。用着用着发现了一个问题,一个一个搜索电子书的书签太费事了。就想着有没有那种可以同时搜索多个电子书书签并返回结果的程序?
有点类似于拿电子书书签当词条的词典软件了。
顺便推一下刚做好的《标准日语语法》:
可以通过AHK实现该功能。
例如我调用的是Okular侧边栏搜索目录,代码如下:
#Requires AutoHotkey v2.0
#Include "%A_LineFile%\..\Lib\UIA.ahk"
#g::
{
; 通过在末尾加入 "w450 h90" 选项,将输入框限定为精简的长条状
; w代表宽度(Width),h代表高度(Height)
ib := InputBox("请输入要过滤的书签/目录文本 (将应用到所有窗口):", "Okular 全窗口联搜", "w450 h90")
if (ib.Result == "Cancel" || ib.Value == "")
return
searchTxt := ib.Value
okularHwnds := WinGetList("ahk_exe okular.exe")
if (okularHwnds.Length == 0) {
MsgBox("未检测到任何运行中的 Okular 窗口。", "提示", 48)
return
}
for hwnd in okularHwnds {
try {
WinActivate(hwnd)
WinWaitActive(hwnd, , 0.5)
Send("!6")
Sleep(80)
okularEl := UIA.ElementFromHandle(hwnd)
searchBox := okularEl.FindElement({ClassName: "KTreeViewSearchLine", ControlType: "Edit"})
searchBox.Value := searchTxt
searchBox.SetFocus()
} catch Error {
; 忽略个别处于异常状态窗口的报错
}
}
if (okularHwnds.Length > 0) {
WinActivate(okularHwnds[1])
}
}