一提到可以設定鍵盤滑鼠動作的軟體,大家一定會想到按鍵精靈
雖然按鍵精靈的確是很好很強大
但是某些場合下就無法使用(比方說某某軟體禁止開啟按鍵精靈)
此外新版開始一段時間就會自動關閉
加上又有廣告,而且軟體有點肥大
如果只是要做簡單又固定的事情就不是很方便了
今天介紹的AutoHotKey這套軟體
就可以靠簡單的步驟達到連發的功能喔

官方下載頁

首先請下載AutoHotKey這套軟體,安裝檔只有1.95MB,比按鍵精靈小
安裝完後執行,右下角就會出現一個小小的H符號
在H符號按下右鍵,選擇 [Edit This Script] 這個選項
就會開啟記事本

ahk_1.png

把記事本的內容全部刪掉,將以下字樣填入進去
然後存檔關閉

~F3::suspend
$x::
        Loop
        {
                If Not GetKeyState("x", "P")
                Break
                Send {x Down}
                Sleep 100
                Send {x Up}
                Sleep 100
        }
Return

ahk_2.png

接下來在圖示按右鍵,選擇 [Reload This Script]
或是重新開啟AutoHotKey
從此以後只要按下x鍵不放,就會一直連打x鍵了
對於某些要狂按鍵盤的遊戲來說
有個連發腳本可以讓你的鍵盤壽命更持久喔

程式方面應該是不需要解說
可以將script中的x改成別的按鍵,例如改成s,就能按住s連發
或是將Sleep 100的數字改小,按鍵的頻率會加快
Sleep的時間單位為毫秒,因此100=0.1秒
F3代表按下時會停用(suspend)快速鍵執行,但執行中的會繼續
例如我寫一個按x後會不斷送指令的迴圈,即使我用了suspend仍會不停執行
如果要讓整個執行緒都停止,就要把suspend改成pause

如果Caps Lock(大寫鎖定)為On的話,好像有可能發生操作錯亂的情形
發生這種情況的話請將Caps Lock改成Off
或是重開一次AutoHotKey即可解決

如果你是使用Vista,在軟體中按下x卻沒有連打,請不要緊張
可能是因為你執行的軟體是要有系統管理者權限的
但因為AutoHotKey沒有系統管理者權限,才會沒有作用
只要開啟AutoHotKey前按下右鍵,選擇 [以系統管理員身分開啟] 即可

AutoHotKey還有將腳本轉成exe執行檔的功能
能讓按鍵腳本在沒有裝AutoHotKey的電腦上執行喔


AutoHotKey由於全英文,加上編輯腳本必須使用程式自定的Script
不像按鍵精靈可以從指令中直接選擇
比較起來是有點難以上手
但以操作簡單、容量小、無廣告等優點來說
AutoHotKey還是有他的優點存在的
也難怪不少人用了

 

2013/4/22 補充:製作連發可執行檔

不知道為什麼打完後他自己消失了(囧),只好重打一次了

首先請在開始功能表,執行[Convert .ahk to .exe]

ahk_1

Source是你要轉換的AutoHotKey原始檔,預設會在Documents目錄下
Destination是你要儲存執行檔的位置跟檔名,請自行設定
Custom Icon是自訂圖示,一般用不到
Base File是程式的核心,使用(Default)即可

ahk_2

選完之後按下>Convert<,如果轉換成功就會出現以下訊息

ahk_3

之後直接執行檔案,在右下角的通知圖示列就會跑出來了
跟正式的AutoHotKey相比,他只有暫停Script的功能
另外對方的電腦完全不需要安裝AutoHotKey,直接執行即可

如果懶得自己做的話,也可以下載我產生的X鍵按住連發

ahk_4  

 

2013/4/22 補充:如何按下特定鍵開始連打特定按鍵,再按一次結束?

以下code有參考網路範例,功能是按下F9後開始連打x,再按一次F9結束

#MaxThreadsPerHotkey 2

$F9::

PressKey := ! PressKey

Loop
{
    If ! PressKey
        Break
    Send {x Down}
    Sleep 20
    Send {x Up}
    Sleep 20
}
Return

#MaxThreadsPerHotkey 1

 

2015/7/17 補充:
提供另一種範例,增加按F2暫停所有操作

#MaxThreadsPerHotkey 2
$F2::pause
$F6::Reload

$F9::

PressKey := ! PressKey

Loop
{
    ClickMe("x", 200)
    ClickMe("y", 200)
    ClickMe("z", 200)
}
Return


ClickMe(key, time)
{
    Send, %key%
    Sleep, %time%
}

#MaxThreadsPerHotkey 1

 

2014/4/1 補充:

小修改腳本原文,增加F3暫停功能,將原本延遲0.02秒改成0.1秒
輸入再快,遊戲接收不到也沒用

 

2014/6/22 補充:如何按特定按鍵後在固定時間執行重複動作?

以下code有參考網路範例,功能是按下F2時開啟兩個計時器,每200秒按一次a鍵跟s鍵
按下F3時停止計時器
請自行修改成你需要的按鍵跟時間,例如要改成10秒就把200000改成10000(單位毫秒)

~F2::
{
    settimer, skill_1, 200000
    settimer, skill_2, 200000
    return
}
~F3::
{
    settimer, skill_1, off
    settimer, skill_2, off
    return
}

skill_1:
{
    Send {a Down}{a Up}
    return
}

skill_2:
{
    Send {s Down}{s Up}
    return
}

 

2015/11/3 補充:如何使用GUI

AutoHotKey可以產生GUI,方法有二
其一是直接用記事本打,其二是用SmartGUI這個工具,拖拉完後會產生AutoHotKey的語法但老實說我覺得那個工具很難用,排版對不齊,操作不直覺
(例如不能直接調整大小,必須先移動位置才能調整大小)
所以以下是參考SmartGUI後自己硬做出來的

ahk_gui

----
Gui, Add, Button, x12 y120 w230 h30 gSetting, Setting

Gui, Add, Text, x12 y30 w40 h20 , Hotkey
Gui, Add, Hotkey, x52 y28 w40 h20 vUserInput1,
Gui, Add, Text, x100 y30 w60 h20 , Click
Gui, Add, Edit, x160 y28 w30 h20 vCount1,
Gui, Add, Text, x200 y30 w40 h20 , Time(s)

Gui, Add, Text, x12 y60 w40 h20 , Hotkey
Gui, Add, Hotkey, x52 y58 w40 h20 vUserInput2,
Gui, Add, Text, x100 y60 w30 h20 , Click
Gui, Add, Hotkey, x100 y58 w60 h20 vUserSend2,
Gui, Add, Edit, x160 y58 w30 h20 vCount2,
Gui, Add, Text, x200 y60 w40 h20 , Time(s)

Gui, Show, x127 y87 h170 w250, New GUI Window
Return

GuiClose:
ExitApp

Setting:
GuiControlGet, UserInput1
if %UserInput1%
{
    Hotkey,%UserInput1%,SendMe1
}
GuiControlGet, UserInput2
if %UserInput2%
{
    Hotkey,%UserInput2%,SendMe2
}
MsgBox Setting change
Return

SendMe1:
GuiControlGet, Count1
Loop %Count1%
{
    Click, %UserSend1%
}
Return

SendMe2:
GuiControlGet, UserSend2
GuiControlGet, Count2
Loop %Count2%
{
    SendInput, %UserSend2%
}
Return
----

Gui開頭的是產生視窗元件,第一格是觸發條件,按下某按鍵(可為組合鍵)後做後面的動作
第一行是按滑鼠左鍵Y下,第二行是按按鍵X Y下
要擴充的話請自行複製第二行的元件跟方法,然後修改即可

    全站熱搜

    蕭雲 發表在 痞客邦 留言(176) 人氣()