作者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/m.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