[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

##

您可能也會有興趣的類似文章

18 則留言 »[AutoHotkey] 連按兩次Escape鍵來關閉視窗

  • sfufoet Unknow Unknow

    太棒了!原來我想用單個esc鍵的,但是失敗了。多謝分享。給大家一個好東西。AutoHotkey漢化了一半的幫助菜單。http://pickup.mofile.com/4743716622921562

  • 訪客 Unknow Unknow

    Not for VI user!

  • Jazzdog Unknow Unknow

    您好!由於您的文章開啟對AutoHotkey的興趣,我引用您的範例發表了一篇心得以及相關的範例於:http://bloguide.ettoday.com/jazzdog/textview.php?file=54048若您認為不妥,還煩請通知一聲我便將相關資源從網路移除!在此還是感謝您的blog提供我許多有用的資訊!

  • 簡睿 Unknow Unknow

    歡迎分享! 

  • 阿德 Unknow Unknow

    要關閉當前視窗的化用 WinClose, A就好了。

  • Jackson Unknow Unknow

    版主您好,
    參考了您的指令碼,我作了一些變形的應用,但出了一些狀況,想向您請教
    能不能在同一按鍵上,壓一下是一個指定功能,壓兩下是另一個指定功能,我問題發生在壓兩下除了指定的功能之外還是會發送壓一下時的指令,造成干擾,我寫的指令如下:
    ~LCtrl::Keywait, LCtrl, d, t0.3if errorlevel = 1Send {LWin Down}-{LWin Up}returnelseKeywait, LCtrl, d, t0.3if errorlevel = 0{send ^creturn}return
    請版主為小弟指點一下迷津,感激不盡!

  • Jackson Unknow Unknow

    不好意思,我的指令碼應該是這個才對
    ~LCtrl::Keywait, LCtrl, d, t0.5if errorlevel = 0send #{up}elseKeywait, LCtrl, d, t0.5if errorlevel = 1send ^vreturn

  • Jackson Unknow Unknow

    沒有問題!
    您肯幫忙就很謝謝了^.^

  • Jackson Unknow Unknow

    版主大人,
    您寫的那一段指令,的確能解決我的問題,再次的感謝您的幫忙

  • san Windows XP Internet Explorer 7.0

    剛看著您的網頁入門中,這個功能超棒,可是一直試不出來,如果只是單純想連按兩下關閉目前視窗怎麼寫
    把倒數第二個黃色框框裏面copy進去都沒作用的感覺,謝謝您的網站,入門中!!

  • san Windows XP Internet Explorer 7.0

    我覺得是我不會用的可能比較大,剛試試看把條件改成比較簡單的符合就送出Alt+F4似乎可行,雖然感覺比較不智慧一點,暫時
    能用就好,另外看到板主大人你回應許久未用,嚇到一下,因為想請教一下有沒有更懶的指令,想說設成按鍵按下2秒才啟動指
    令,若還記得的話煩請不吝賜教~~~

    • 簡睿 Windows Vista Firefox 3.5.5

      許久未用指的是連按Esc兩下的這個功能啦。Autohotkey無法一日沒有它哩,按下兩秒才作用要查一下指令…

  • Marco Windows XP Internet Explorer 6.0

    簡睿大哥,

    小弟想請教您,我想在AHK寫出功能鍵取代一般論壇留言板上的Submit和Cancel的功能,以下語法會送出Submit若以此網頁為例,
    當我按AHK的送出留言就會啟動留言板上的送出留言功能,懇請大哥為我解答~祝中秋節快樂。
    Gui +AlwaysOnTop
    Gui, Font, S09 cFF0000 , Tahoma
    Gui, Add, Tab, x-4 y0 w278 h143 , Page1
    Gui, Font, S16 c000000 , Tahoma
    Gui, Add, Button, x2 y22 w65 h30 ,送出留言
    Gui, Tab, Page1
    ButtonSOIC:
    WinActivate, ahk_id %k_ID%
    Clipboard = Submit
    SendInput Submit
    Return

    GuiClose:
    ExitApp

  • 簡睿 Windows other version Firefox 3.6.10

    網頁的submit不是按Enter就可以嗎?要控制網頁上的event,似乎用Firefox+GreaseMonkey比較方便哦?

  • Marco Windows XP Internet Explorer 6.0

    簡睿大哥

    我已看過Firefox/GreaseMonkey兩套軟體簡介,看起來是改Script來達到效果而且效果真棒,我是要改微軟的MOSS(Microsoft Office SharePoint System)網頁,因為它的Submit Button在網頁的最上面與最下面,中間我設定了大約100個Item吧,用滑鼠滾很麻煩,我怕侵犯到微軟權益所以才會想到用AHK。
    若我在此網站的留言板打完字後必須將滑鼠移動到Button"送出留言"按下滑鼠才可Input,因此我想要用AHK做一個Button取代此功效,此外以此網頁為例按ENTER不會取代Submit,MOSS也是一樣,對用AHK建置Submit Button您有何建議?
    附註:託您洪福,我用AHK依照我公司需求寫一個完整的鍵盤介面,這個介面獲得好評~謝謝你。

    • 簡睿 Windows other version Firefox 3.6.10

      Sorry, 因為沒有使用SharePoint,無法提供作法,或許可以修改樣板,加入JavaScript來處理?

      但如果硬要用Autohotkey做的話,大概是送出Ctrl+End把頁面移到最後面,再用MouseMove X, Y將游標移到(X,Y)座標,再送出LButton做click動作。

  • Marco Windows XP Internet Explorer 6.0

    簡睿大哥,

    謝謝

填寫回應

 

 

 

您可使用這些HTML標籤

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

隨機文章

  1. 資料庫工具Aqua Data Studio躍升至6.0版 
  2. 改造你的Gmail: Better Gmail 0.3 (FireFox extension) 
  3. SVN Web Client: 不只是View,還能更新! (5)
  4. TiddlyWiki的安裝與設定 (4)
  5. Xuite樣式研讀攻略! (1)
  6. 令人廢寢忘食的小說:《時間迴旋》(Spin) 
  7. 在Windows上安裝Trac的完整步驟 (5)
  8. 用多顆CPU加快Vista開機速度 
  9. Xuite存檔失敗的小小問題 (1)
  10. 把應用系統移植到WebSphere 6.0 

歷史熱門文章

  1. 如何手動輸入Plurk的表情圖示? (367,773 點擊/2008-09-29)
  2. 啟用&關閉中華電信ZyXEL P874的無線網路連線功能的步驟[修訂] (118,740 點擊/2011-06-01)
  3. Plurk CSS樣式自訂修改全攻略 (89,205 點擊/2009-07-04)
  4. 簡單放大Plurk輸入區的方法[修訂] (88,799 點擊/2008-09-29)
  5. 網路升級光世代50M/3M與設定ZyXEL P874 (71,289 點擊/2011-05-28)
  6. 輕鬆學會彈指神功-揭露AutoHotkey絕技 (50,587 點擊/2008-04-10)
  7. iPad新手入門技巧 (48,894 點擊/2011-02-05)
  8. iPad鍵盤輸入全攻略 (42,283 點擊/2011-01-01)
  9. 分享世博台灣館主題曲『台灣的心跳聲』MV(附歌詞+下載連結+新歌詞) (40,754 點擊/2010-04-27)
  10. 調整Windows 7環境: 加回工作列的「顯示桌面」圖示 (40,556 點擊/2010-01-02)