close

AutoHotKey_Icon.png

Autohotkey的組合鍵太多?記不起來或者會不小心按到?

當需要多一點的設定參數時,只有組合鍵也不夠完成指令!

這次,就來展示如何簡單(對!複製貼上就好!)製作自己的命令視窗

用文字命令代替過多且可能誤觸的組合鍵

用對話方式,讓設定的腳本能更靈活的執行!

 

請先下載腳本 AutoHotKey.ahk 

這次的範例是按下組合鍵[滑鼠左鍵+空白鍵]後,

會跳出一個我們自己的對話視窗,

在對話盒輸入設定好的命令文字,就能執行對應的功能

例如:

控制播放器的暫停/播放/停止 或是 下一首;

可以控制電腦的[關機]或是[重開機]。甚至[預約關機]

還可以暫時鎖定電腦,讓鍵盤滑鼠暫時無作用以保護電腦不被其他人操作。

 

Autohotkey的功能是不是很強大,很方便?

 

請一邊對照腳本一邊看本文來快速學習了解

亦可以直接替換原本預設的檔案(當然,您已經先安裝好AutoHotkey了吧?對吧!是吧!?)

重新載入一次(Reload)AutoHotKey,直接體驗(應該都是這樣吧?)

載入後,如果有看過 [AutoHotKey]-MyAutoClick 就知道犬大叔的習慣

Mouse(L)+s =>暫停Autohotkey的功能
Mouse(L)+r  => 重新載入Autohotkey的腳本ahk

這兩個最重要的指令依定要有,以防程式失控爆走!!

了解之後!就直接來了...

;●●● 輸入命令字串對話盒 Mouse(L)+space
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
~LButton & space::
InputBox, UserInput, JCommand, Sir what's your wish?, ,200, 130,,700,,5
if ErrorLevel ;;;CANCEL
    return
else
    readJCommand(UserInput)
return    

當按下組合鍵[滑鼠左鍵+空白鍵]後,就會跳出一個我們自己的對話視窗

啟動命令在這行

InputBox, UserInput, JCommand, Sir what's your wish?, ,200, 130,,700,,5

對照一下官網的說明 (來自 https://autohotkey.com/docs/commands/InputBox.htm )

InputBox, OutputVar [, Title, Prompt, HIDE, Width, Height, X, Y, Font, Timeout, Default]

InputBox: 啟動輸入盒的命令

UserInput: 輸入的文字儲存在這

JCommand: 輸入盒的標題文字

Sir what's your wish?" 輸入盒的預設提示文字

,,: 空白,這欄位為HIDE,也就是密碼欄位效果,隱藏輸入文字,空白就不會隱藏書入文字

200: 為輸入盒的寬度(Pixel)

130: 為輸入盒的高度(Pixel)

,,700: 為輸入盒的起始X,Y座標,X座標為空白則預設為置中(螢幕水平的中間),Y座標為距離螢幕最上方700 pixels的位置(不希望太高)

,,: 接下來為字型(無視,不輸入)

5: 為對話盒顯示5秒後消失(最多顯示24.8天,一共2147483秒)

以上就完成我們的輸入盒,打完收工!...阿..還沒啦!回來!回來! 還有資料要處理啦!!

 

當設定的參數以及顯示輸入盒沒問題之後,就會將取道輸入的文字,UserInput,傳入我們的處理函式readJCommand()之中了。

;●●● [函式]分析命令盒內容
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
readJCommand(theJCmd)    
{
    ;;鎖定滑鼠鍵盤
    if (theJCmd = "lock") 
    {
        lockInput()
    }
    ;;出現命令視窗
    else if (theJCmd = "cmd")
    {
        run C:\Windows\system32\cmd.exe
    }
    ;;暫停音樂
    else if (theJCmd = "pp")

..............................................

    ;;關閉所有視窗
    else if (theJCmd = "cc") 
    {
        cleanAllWindow()
    }
    ;;模仿上面 自行填入想要增加的命令以及執行程式
    ;;else if (theJCmd = 命令) 
    ;;{
    ;;    執行程式...
    ;;}
    
    return
}

readJCommand()這是我們的自定命令對話盒的核心!

根據輸入的文字(theJCmd)來判斷該執行甚麼樣的動作

例如:

輸入"lock" 來鎖定滑鼠/鍵盤

輸入"ss"來開啟工作管理員

等等..

也可以在後面自己編寫加入的命令以及相對應執行的動作

例如增加一段:

    else if (theJCmd = "mute") 
    {
       Send {Volume_Mute}
    }
    

就是當在輸入盒輸入"mute" 就會將系統的音量關閉成為"靜音"狀態

來看看這範例中已經有哪些寫好的命令

輸入命令字串 "cc"         => 呼叫 cleanAllWindow()關閉所有視窗

一次就直接關閉桌面上所有的視窗!爽快吧!

輸入命令字串 "pp"        => mediaplayer play/pause
輸入命令字串 "stop"     => mediaplayer stop
輸入命令字串 "next"     => mediaplayer next

只要有播放器存在就能控制播放器的播放控制,當然有其他功能需求也可以自行加入


輸入命令字串 "ss"         => 啟動工作管理員
輸入命令字串 "reboot"             => "YES" => 強迫重開機
輸入命令字串 "81/bye/shutdown" => "YES" => 強迫關機
輸入命令字串 "timeoff?" => 幾小時 => "YES" => 預約關機
輸入命令字串 "timeoff" => 取消預約關機

關於預約關機,也正好是這對話盒的另一個很好的例子

當我們要設定預約關機,可以自由輸入幾個[小時後]關機

因此我們需要能夠自由輸入時間,而且最後增加確認命令的機制避免誤觸指令

 

先開啟對話盒,輸入"timeoff?" (有問號喔!) 來啟動預約關機的機制

之後輸入幾小時之後要關機

最後顯示換算成秒數,並要求輸入"YES"來確認命令

如此,連串的參數以及問答方式比起只有輸入組合鍵的Autohotkey是不是又更厲害一點了呢?

 

當然有預約關機,自然就必須找到取消預約關機的方式

一樣開啟對話盒輸入"timeoff" (沒有問號)

如此就能立刻取消之前的預約關機了

 

最後來說明一下[鎖定滑鼠鍵盤]這功能

開啟對話盒輸入命令字串 "lock" 便會鎖定滑鼠鍵盤

鎖定滑鼠/鍵盤的哪些按鈕由函式 lockInput() 來設定
例如:

Hotkey, Space, DoNothing     => 鎖定空白鍵
Hotkey, **Space, DoNothing    => 鎖定跟空白鍵相關的組合按鍵
Hotkey, CapsLock, DoNothing    =>鎖定大寫鍵

如此,當話盒輸入命令字串 "lock" 之後,

被我們設定的按鍵,組合鍵,滑鼠操作都會先被Autohotkey給[無效化]

就能達到鎖定電腦,不會讓外人操作的目的了

但按鈕都被鎖定了,要怎麼回復?!

畢竟所有指令都會先經過Autohotkey

因此,只要能輸入將Autohotkey重啟(重新載入)的指令就可以了!

想起來了嗎?

Mouse(L)+r  => 重新載入Autohotkey的腳本ahk

對! 就是這個!很重要對吧!

當鎖定滑鼠鍵盤之後,只要按下[滑鼠左鍵+r] 就能解開鎖定了!

當然,可以自己設定獨有的組合鍵,這樣不用記住密碼,也能輕易的鎖住電腦

放心的暫離了!

 

所以,開始玩Autohotkey時,一定要把重新載入Autohotkey的指令先建立好

這樣才能在編寫過程中,不慎讓電腦爆走時有對應的處置方式!


這次Autohotkey的範例,主要是介紹除了一般利用組合鍵來編寫功能外

還可以利用輸入命令列的方式,達到更靈活的功能運用

 

而且附帶許多常用的功能也都在範例中可以找到

有興趣的人可以參考利用,編寫出更合適自己使用的腳本

達到懶人最偉大的境界!

 


腳本下載: AutoHotKey.ahk 

Autohotkey 指令查詢: https://autohotkey.com/docs/commands/

 

arrow
arrow

    宅犬 發表在 痞客邦 留言(2) 人氣()