2006-05-11 23:04 [AutoHotkey] 連按兩次Escape鍵來關閉視窗

偷懶是進步的原動力,即使就像關閉視窗這樣一個簡單的動作。

先前介紹過的StrokeIt!用右鈕畫個「L」可以達成關閉視窗的目標,但今天的需求是使用鍵盤。

EscapeClose是一個按Escape鍵來迅速關閉視窗的工具,它有幾種模式:
  1. 模式一:按Escape鍵後,滑鼠游標自動到到視窗的關閉按鈕(X)處
  2. 模式二:按Escape鍵後 ,立即關閉視窗
  3. 模式三:按Escape鍵後,視窗最小化
但Escape鍵是經常使用的按鍵(例如中文輸入時的取消鍵),因此單單用一個Escape來關閉視窗實在是太危險,若是連按兩個Escape鍵應該就比較妥善了。

最後是使用AutoHotkey來完成這個需求。

先用最簡單的複合鍵 Ctrl+` (Escape鍵下方的Back Quote);WinGetActiveTitle取得目前視窗的標題,再用WinClose把此標題的視窗關閉:
^`::
WinGetActiveTitle, Title
WinClose, %Title%
return

接著用滑鼠左鈕,把左鈕(Lbutton)視同Ctrl、Shift等按鍵,按住不放後再按Escape鍵;按住不放A鍵再按B鍵的寫法是 「A & B」。
~在這裡是指示原有的左鈕仍要處理,若不加~則左鈕就整個失效了。
~LButton & Escape::
WinGetActiveTitle, Title
WinClose, %Title%
return

比照上例,我們也可以按住左鈕不放再按右鈕(RButton)來執行,以省去鍵盤的操作。
~LButton & RButton::
WinGetActiveTitle, Title
WinClose, %Title%
return

連按兩個Escape的寫法就複雜許多 :
  • 用KeyWait讀取鍵盤輸入,如果0.5秒內不是按Escape則結束
  • 0.5秒內按了Escape,則再讀第二個按鍵,若為Escape則關閉視窗
  • 若第二個按鍵不為Escape則結束
~Esc::
Keywait, Escape, , t0.5
if errorlevel = 1
return
else
Keywait, Escape, d, t0.1
if errorlevel = 0
{
WinGetActiveTitle, Title
WinClose, %Title%
return
}
return

大功告成!運作起來一切正常。

在撰寫與測試期間為了方便重新載入的腳本,另外寫了個重新載入的動作:按住左鈕不放再按R鍵。
~LButton & r::
reload
return

##
平均分數:0 顆星    投票人數:0
我要評分:
回應
挺不賴地~贊助一下
服務於軟體業的資訊老兵。興趣廣泛,學習力佳,好奇心強。
噗浪/互動式留言板
累積 | 今日
loading......
關鍵字
Re:[使用svchost viewer檢視你電...],By 科技與資訊研究所 於2008-11-11
Re:[【部落格更新】 增加中央氣象局衛星雲圖],By ~平淡生活~ 於2008-11-04
Re:[【部落格更新】 增加中央氣象局衛星雲圖],By ~平淡生活~ 於2008-10-07
Re:[標籤雲-翻譯自wikipedia],By 4664-1946~1964嬰兒潮、Baby Boomers 於2008-07-22
Re:[標籤雲-翻譯自wikipedia],By 4664-1946~1964嬰兒潮、Baby Boomers 於2008-07-22
熱門搜尋書籤
有朋自遠方來~

website counter
台灣部落格列表 PageRank
    沒有新回應!






如何使用RSS
Powered by Xuite