[AHK-] 在頁面上選取文字後按pause在sublime查

看板EzHotKey作者 (冰與火之歌)時間6年前 (2018/12/09 07:54), 6年前編輯推噓1(1013)
留言14則, 2人參與, 6年前最新討論串1/1
如題 目的是在任何可選取文字的頁面或程式中 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://www.ptt.cc/bbs/EzHotKey/M.1544313253.A.6CE.html

12/09 11:23, 6年前 , 1F
Pause::裡的那段Loop可以去掉
12/09 11:23, 1F

12/09 11:23, 6年前 , 2F
查了一下sublime是個文字編輯軟體
12/09 11:23, 2F

12/09 11:24, 6年前 , 3F
那Routine:裡應該是先判斷sublime存不存在
12/09 11:24, 3F

12/09 11:25, 6年前 , 4F
再看要不要開啟sublime 另外視窗的標題也要確定名字
12/09 11:25, 4F

12/09 11:25, 6年前 , 5F
可以用SetTitleMatchMode設定視窗標題是否符合的模式
12/09 11:25, 5F

12/09 11:26, 6年前 , 6F
回上個視窗簡單一點的就直接alt + tab
12/09 11:26, 6F

12/09 11:26, 6年前 , 7F
複雜一點就切換前先用WinGetTitle紀錄視窗標題
12/09 11:26, 7F

12/09 11:53, 6年前 , 8F
先謝了 晚上會照著改看看
12/09 11:53, 8F
經過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

12/12 01:08, 6年前 , 9F
其實原本想說的是IfWinExist要放在Run前面 XD
12/12 01:08, 9F

12/12 01:08, 6年前 , 10F
不是檢查執行檔在不在
12/12 01:08, 10F

12/12 01:10, 6年前 , 11F
因為有的軟體重複執行會直接開新的視窗出來
12/12 01:10, 11F

12/12 09:37, 6年前 , 12F
是有想到ifwinexist
12/12 09:37, 12F

12/12 09:37, 6年前 , 13F
但多視窗外還有多分頁
12/12 09:37, 13F

12/12 09:37, 6年前 , 14F
findresult可能在某視窗的某分頁中…
12/12 09:37, 14F
文章代碼(AID): #1S35cbRE (EzHotKey)
文章代碼(AID): #1S35cbRE (EzHotKey)