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/
留言列表