[AHK-] 在页面上选取文字后按pause在sublime查

楼主: SongIceFire (冰与火之歌)   2018-12-09 07:54:11
如题
目的是在任何可选取文字的页面或程式中
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并不是单视窗单分页
而是多视窗多分页 希望执行时可以固定在一个视窗上
以上
碍于时间压力 希望有人可以帮忙 提供关键字也可以
谢谢
作者: fossil313 (阵雨)   2018-12-09 11:23:00
Pause::里的那段Loop可以去掉查了一下sublime是个文字编辑软件那Routine:里应该是先判断sublime存不存在再看要不要开启sublime 另外视窗的标题也要确定名字可以用SetTitleMatchMode设定视窗标题是否符合的模式回上个视窗简单一点的就直接alt + tab复杂一点就切换前先用WinGetTitle纪录视窗标题
楼主: SongIceFire (冰与火之歌)   2018-12-09 11:53:00
先谢了 晚上会照着改看看
作者: fossil313 (阵雨)   2018-12-12 01:08:00
其实原本想说的是IfWinExist要放在Run前面 XD不是检查执行档在不在因为有的软件重复执行会直接开新的视窗出来
楼主: SongIceFire (冰与火之歌)   2018-12-12 09:37:00
是有想到ifwinexist但多视窗外还有多分页findresult可能在某视窗的某分页中…

Links booklink

Contact Us: admin [ a t ] ucptt.com