作者SongIceFire (冰与火之歌)
看板EzHotKey
标题[AHK-] 在页面上选取文字後按pause在sublime查
时间Sun Dec 9 07:54:11 2018
如题
目的是在任何可选取文字的页面或程式中
e.g. chrome pdf浏览器或pdf或 microsoft word 等等
使用滑鼠选取英文或中文或任何字元或程式码
按下pause後 sublime会跳出来
并且自动输入 ctrl + shift + f 搜索刚刚选取的字串
然後视窗自动转回当时选取文字的视窗或程式(上一个视窗)
爬文一下午後写成这样
Pause::
Loop {
Pause := GetKeyState("Pause", "P")
if(!Pause)
Break
}
Gosub, Routine
Return
Routine:
{
run C:\Program Files\Sublime Text 3\sublime_text.exe
IfWinExist sublime_text.exe
{
WinActivate
}
; WinWait sublime_text.exe
; Send, ^w
Clipboard =
Send, ^c
ClipWait ;
Sleep, 1500
Send, ^+f
Send, ^v
Send !{Enter}
}
Return
但有几点问题不晓得要怎麽处理
1 不知道为什麽有时候会失效 sublime并不会跳出来
2 sublime再次搜索後该结果会显示在上次的结果後面
我则希望每次都清掉上一次都搜寻结果
之中也尝试了执行搜索前先输入 ctrl + w 来关闭但这也有些问题
会关闭滑鼠所选取文字的视窗或程式
3 回上个视窗不晓得怎麽做
4 我使用sublime并不是单视窗单分页
而是多视窗多分页 希望执行时可以固定在一个视窗上
以上
碍於时间压力 希望有人可以帮忙 提供关键字也可以
谢谢
----
Sent from
BePTT
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.136.75.238
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/EzHotKey/M.1544313253.A.6CE.html
1F:推 fossil313: Pause::里的那段Loop可以去掉12/09 11:23
2F:→ fossil313: 查了一下sublime是个文字编辑软体12/09 11:23
3F:→ fossil313: 那Routine:里应该是先判断sublime存不存在12/09 11:24
4F:→ fossil313: 再看要不要开启sublime 另外视窗的标题也要确定名字12/09 11:25
5F:→ fossil313: 可以用SetTitleMatchMode设定视窗标题是否符合的模式12/09 11:25
6F:→ fossil313: 回上个视窗简单一点的就直接alt + tab12/09 11:26
7F:→ fossil313: 复杂一点就切换前先用WinGetTitle纪录视窗标题12/09 11:26
8F:→ SongIceFire: 先谢了 晚上会照着改看看12/09 11:53
经过fossil313的提醒以後
至少写出可以使用的程式码了
修改後如下
Pause::
clipboard =
send, ^c
ClipWait, 1
if FileExist("C:\Program Files\Sublime Text 3\sublime_text.exe")
{
Gosub, runSublime
}
else
{
MsgBox, , 注意, 请确定程式路径是否正确
}
Return
runSublime:
{
Run, C:\Program Files\Sublime Text 3\sublime_text.exe
WinWait, Find Results - Sublime Text, , 0.5
if ErrorLevel = 0
{
Send, ^w
Gosub, doSearch
}
else
{
Gosub, doSearch
}
}
Return
doSearch:
{
Send, ^+f
Send, ^v
Send, !{Enter}
}
Return
之前提及的几个需求
比方说回上个视窗因为有其他需求就不弄了
而多视窗多分页这点还要在想一下
以上
谢谢
※ 编辑: SongIceFire (223.136.75.238), 12/11/2018 20:26:25
9F:→ fossil313: 其实原本想说的是IfWinExist要放在Run前面 XD 12/12 01:08
10F:→ fossil313: 不是检查执行档在不在 12/12 01:08
11F:→ fossil313: 因为有的软体重复执行会直接开新的视窗出来 12/12 01:10
12F:→ SongIceFire: 是有想到ifwinexist 12/12 09:37
13F:→ SongIceFire: 但多视窗外还有多分页 12/12 09:37
14F:→ SongIceFire: findresult可能在某视窗的某分页中… 12/12 09:37