[公告] 2015年度農曆春節期間服務公告 [公告] 痞客邦《行動管家app》全新改版上線囉![公告] 豐掌櫃「7 - ELEVEN 取貨」功能上線囉!部落格買賣小物,連物流都好便利~[公告] 2015年度元旦假期服務公告[公告] 痞客豐年終!萬元禮券限量送~
好康道相報
加入部落軌道,讓你的部落格有更多人知道 《按此加入》《使用心得
欲轉貼本站文章者,只要註明出處及網址即可,不需我同意了,謝謝您的配合
留悄悄話的網友請注意:如果您非痞客邦會員(包含使用FB/Google+帳號),是看不到回覆的喔

一提到可以設定鍵盤滑鼠動作的軟體,大家一定會想到按鍵精靈
雖然按鍵精靈的確是很好很強大
但是某些場合下就無法使用(比方說某某軟體禁止開啟按鍵精靈)
此外新版開始一段時間就會自動關閉
加上又有廣告,而且軟體有點肥大
如果只是要做簡單又固定的事情就不是很方便了
今天介紹的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代表按下時會暫停這個腳本執行,再按一次啟動

如果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

 

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
}

Posted by 蕭雲 at 痞客邦 PIXNET 留言(60) 引用(0) 人氣()


open trackbacks list Trackbacks (0)

留言列表 (60)

Post Comment
  • 環保
  • H的圖標不見了.我不能設置連發.我把記事本的內容改成空白后.圖標就不見了.爲什麽呢>我用的是Windows 7 但我沒有隱藏圖標。重新下載也沒有用
  • 確定完全找不到嗎?
    工作管理員的"處理程序"裡面有autohotkey在執行嗎?

    蕭雲 replied in 2010/11/07 18:35

  • 環保
  • 完全找不到.處理程序那裡看不到有.我系統還原都用了.還是不行.謝謝你回覆我
  • 建議重新安裝一次AutoHotKey吧
    或是執行AutoHotKey時選用"系統管理員執行"
    我雖然沒有用過Win 7但有用Vista
    沒道理Win 7不行

    蕭雲 replied in 2010/11/08 18:26

  • 環保
  • 選用了.也重新安裝了.[Edit This Script]這個記事本的內容我刪除了.變了空白之後.才這樣
  • 重裝之後Script不會重新產生嗎?

    蕭雲 replied in 2010/12/04 01:30

  • 訪客
  • 我玩神諭之戰 設定好之後開啟著個程適 但是不能進入遊戲
    先進入遊戲在開啟程式 遊戲馬上斷線
    我是使用Vista 用系統管理員身分開啟
  • 或許是遊戲也有擋掉AutoHotKey吧
    這樣就沒法了

    蕭雲 replied in 2010/12/04 02:02

  • 訪客
  • 安安經過多次ㄉ測試 以經可以用了
    不過 要改成其他的按鍵 連射不能改
    不是說把X改成我要更換的按鍵 就可以了嗎 3個X多改了可是不行
    是哪錯了嗎
  • 要改連射的按鍵,要改四個部分...
    第一行、第四行、第六行、第八行
    我猜你忘了改啟動條件吧

    蕭雲 replied in 2010/12/04 02:04

  • bb
  • 請問全民打棒球能用嗎
  • 沒玩過這個遊戲呢,請自行測試吧

    蕭雲 replied in 2010/12/04 02:11

  • 訪客
  • 想問要是 鍵盤右手面的 數字鍵 要怎樣set??? set完都變成左手面的數字鍵了
  • 試試看Numpad0~Numpad9
    不是0~9喔
    比方說Numpad0就是右邊小鍵盤的數字0

    蕭雲 replied in 2010/12/10 02:43

  • 訪客
  • 請問怎麼讓Ctrl連按呢?
    我改成Ctrl或是^都不行
  • 請改成LCtrl或RCtrl

    蕭雲 replied in 2011/01/21 01:50

  • 可
  • 請問一下我要連發的按鍵是空白鍵那我應該怎麼改呢
  • 就改成Space啊

    蕭雲 replied in 2011/01/21 01:53

  • 訪客
  • 我能設定成 我要讓C連發 啟動條件是 LCTRL+C嗎?
  • 啟動條件要LCtrl+C的話
    把第一行的$x::改成^c::即可
    不過結束條件就得另外設定了

    蕭雲 replied in 2011/04/24 03:24

  • 訪客
  • 如果要讓C連發 啟動條件要改 Pagedown+c 那要如何設定呢 = =?
  • 通常組合鍵只有Ctrl Alt Shift
    要Pagedown+C的話
    我想應該是要自己寫條件判斷式吧
    比方說裡面寫入這樣
    If Not GetKeyState("c", "P") and Not GetKeyState("PgDn", "P")
    Break
    (註:我沒測試過,請自行修改)

    蕭雲 replied in 2011/05/01 03:52

  • 鬼
  • 如果我想把它改成F9
    $x::
    Loop
    {
    If Not GetKeyState("F9", "P")
    Break
    Send {F9 Down}
    Sleep 20
    Send {F9 Up}
    Sleep 20
    }
    Return
    請問這樣對嗎?
    如果是方向鍵的→又應該怎樣?
  • 不太對喔,第一行的$x::代表說按下x就會觸發以下的動作
    所以必須改成$F9::
    右方向鍵直接寫Right即可

    請參考以下網頁,有介紹大部分鍵盤按鍵在AutoHotKey的表示法
    http://xahlee.org/mswin/autohotkey_key_notations.html

    蕭雲 replied in 2011/07/05 20:06

  • 訪客
  • 如果要讓G連發 啟動條件是"按N一下" 要怎麼改呢?
    我想要讓N變成切換連發的開關
    就是按N一下 G連發;再按N一下 G取消連發
    不是N代替G連發
    我想過很多方法可是都不行ˊˋ
    請問這要怎麼解決呢??
  • 欸...我現在沒辦法測試,等我查到再來回答你,不好意思...

    蕭雲 replied in 2011/07/05 20:07

  • 訪客
  • 為什麼我設的按鍵進入遊戲後反而連案件原本的功能都沒了?
  • 這情況我沒遇過
    有可能是遊戲本身會禁止按鍵精靈等軟體侵入?
    建議試試看其他的按鍵軟體是不是有一樣情形

    蕭雲 replied in 2011/12/18 10:43

  • Private Comment
  • Micheal Scofield
  • 请问可否用hotkey来不断点击某一个网页的一个按钮?
    如果可以的话又是如何?
    可以帮帮忙教学一下是如何办到的吗?
  • 我對AutoHotKey的用法只有用在連發,所以我不確定能不能用AutoHotKey作
    不過如果只是要點擊固定的地方
    直接用按鍵精靈或隨便找一個連發軟體即可

    蕭雲 replied in 2012/07/17 01:44

  • 訪客
  • 請問簡大:你寫的連發.
    $Y::
    Loop
    {
    If Not GetKeyState("Y", "P")
    Break
    Send {Y Down}
    Sleep 20
    Send {Y Up}
    Sleep 20
    }
    Return

    此設定開始按鑑為Y.
    請問結束也是Y按一下鑑嗎?
    盼簡大能幫我解惑.先說聲謝囉!
  • 不是耶,只要把Y鍵放掉連發就結束了
    在第四行寫的
    If Not GetKeyState("Y", "P")
    Break
    意思就是如果沒有壓下Y鍵就中斷(break)這個迴圈(loop)

    蕭雲 replied in 2012/10/29 11:10

  • 風
  • 關於蕭大所提:AutoHotKey還有將腳本轉成exe執行檔的功能.
    能否請蕭大敎一下以目前1.1.09.04版本為例.大約講解最好附圖.
    先說聲謝囉~
  • 已經增加說明在原文囉

    蕭雲 replied in 2013/04/23 01:32

  • 洋
  • $F9::
    Loop
    {
    If Not GetKeyState("F9", "P")
    Break
    Send {x Down}
    Sleep 20
    Send {x Up}
    Sleep 20
    }
    Return

    蕭大:上面您寫的數據如我改成F9是觸發.要按著F9才能連發.
    請問如要改成只要按F9是開啟(再按一下也是關閉)x連發.不
    用手一直按著.可否指導修改哪. 先向您說聲謝謝!
    哪.
  • 已經增加補充在原文囉

    蕭雲 replied in 2013/04/23 01:57

  • 估
  • 請問怎麼讓AutoHotkey全部復原 因為數具有打錯 所以開不起來 右下方都沒有圖是出現 從安裝一樣不行
  • 你的意思是重安裝後仍然無法開啟AutoHotKey?
    沒有出現任何錯誤訊息嗎?

    蕭雲 replied in 2013/05/05 00:20

  • Jackwu
  • 我想要讓鍵盤右邊的數字鍵2變成發連發該如何使用?謝謝~
  • 前面的留言其實有提到了
    把指定的按鍵改成Numpad2就可以了

    蕭雲 replied in 2013/05/05 00:50

  • 訪客
  • 我想按s連發 是按著才會觸發 這樣寫對嗎
    $s::
    Loop
    {
    If Not GetKeyState("s", "P")
    Break
    Send {s Down}
    Sleep 20
    Send {s Up}
    Sleep 20
    }
    Return
  • 是的

    蕭雲 replied in 2013/06/08 00:47

  • 洋
  • 請問蕭大:底下Sleep 20(這單位是ms.還是啥單位).可否告知?
    先說聲謝囉.

    $x::
    Loop
    {
    If Not GetKeyState("x", "P")
    Break
    Send {x Down}
    Sleep 20
    Send {x Up}
    Sleep 20
    }
    Return
  • 沒錯,就是毫秒(ms),所以設定1000=1秒
    範例的20其實我設定的太小了,設定大一點對電腦比較沒負擔

    蕭雲 replied in 2013/07/07 15:57

  • 流浪喵
  • 請問蕭大,我用轉.exe的程式,轉出來的卻不是執行檔,是哪邊出問題呢?
  • 不好意思,這個問題太過籠統很難回答
    會不會是你的Destination副檔名沒有加上.exe?
    可以麻煩你對照一下截圖嗎?

    蕭雲 replied in 2013/08/07 09:39

  • XD
  • 請問可以設定案某個鍵後讓左邊的ctrl連發直到再按ㄧ次某鍵??
    很需要^^
    ...
  • 你可以看我4/22的補充
    然後把x改成LCtrl就可以了

    蕭雲 replied in 2013/08/07 09:56

  • 好吧
  • 我裝完之後開不到了...就是有個視窗彈出來有一推英文 完全看不懂- -|||
    小視窗內容:
    Error at line 12.

    Line Text: $a
    Error: Duplicate hotkey

    The program will exit
  • 訊息是說你在12行的地方重覆設定了執行熱鍵a
    能否把整個文件貼上來? 應是你指令沒有貼完整導致程式邏輯出錯

    蕭雲 replied in 2013/09/03 11:32

  • 好吧
  • 但是我不會把整個文件貼上來-.-||
    大大可以教我解決方法嗎
  • 右下角的AitoHotKey圖示按右鍵選擇Edit This Script
    然後把記事本上的所有文字都貼上來

    蕭雲 replied in 2013/09/05 08:02

  • ken32019 .
  • $x::
    Loop
    {
    If Not GetKeyState("x", "P")
    Break
    Send {x Down}
    Sleep 20
    Send {x Up}
    Sleep 20
    }
    Return ;
    $z::
    Loop
    {
    If Not GetKeyState("z", "P")
    Break
    Send {z Down}
    Sleep 20
    Send {z Up}
    Sleep 20
    }
    Return
    這是我的腳本你看有錯嗎
  • 我測試的結果可以正常執行

    蕭雲 replied in 2013/09/05 08:04

  • 訪客
  • 大大 我想問一下 啟動熱鍵的問題,假設我熱鍵設成e,我原先遊戲裡的e是一招技能,但是設成熱鍵後,e就會放不出技能,這有把辦法解決?? 簡單說 就是我想把e同時是熱鍵又同時可以發動原先遊戲的技能。
  • 放不出技能的原因是這個按鍵會被AutoHotKey給佔用
    只要在啟動熱鍵的下方加上
    Send {e Down}
    Send {e Up}
    就可以了

    範例
    #MaxThreadsPerHotkey 2

    $e::
    Send {e Down}
    Send {e Up}
    PressKey := ! PressKey
    (下面完全相同)

    蕭雲 replied in 2013/09/16 13:19

  • 訪客

  • 感謝大大 之前在當兵沒回 ,感謝解決我的問題

    BY #29 訪客
  • 不客氣

    蕭雲 replied in 2013/10/03 01:24

  • Private Comment
  • 訪客
  • 請問如果想要使用方向鍵

    按住不放呢??

    不需要連擊

    就像卡鍵那樣~
  • 原文Send {x Down}之後把Send {x Up}拿掉即可
    就變成會一直按住x了
    可以把x改成你想要的方向鍵

    蕭雲 replied in 2014/04/01 00:37

  • 訪客
  • 沒用

    Script lines most recently executed (oldest first). Press [F5] to refresh. The seconds elapsed between a line and the one after it is in parentheses to the right (if not 0). The bottommost line's elapsed time is the number of seconds since it executed.

    001: Return (2.06)

    Press [F5] to refresh.
  • 可能是腳本有問題,請檢查看看有沒有語法錯誤

    蕭雲 replied in 2014/04/01 00:44

  • 訪客
  • 請問如果不要連點,而是按下F1開始長按A鍵,再按一次F1結束,這樣要怎麼改?
  • 長按的意思是按住不放嗎?
    因為你的需求太特殊了,目前想不到要怎麼寫
    請自己嘗試看看吧,不好意思

    蕭雲 replied in 2014/04/28 02:09

  • 洋洋
  • 請問蕭大:這篇放技能的說明
    放不出技能的原因是這個按鍵會被AutoHotKey給佔用
    只要在啟動熱鍵的下方加上
    Send {e Down}
    Send {e Up}
    就可以了

    範例
    #MaxThreadsPerHotkey 2

    $e::
    Send {e Down}
    Send {e Up}
    PressKey := ! PressKey
    (下面完全相同)

    底下是我的問題:
    那假如技能要每200秒放一次的話.要加入啥語法.
    可否請蕭大教導一下.感恩~
  • 洋洋
  • 底下是我的問題:
    那假如技能要每200秒放一次的話.要加入啥語法.
    可否請蕭大教導一下.感恩~

    補充:假如有2個技能.每200秒要放一次.要加入啥語法.
    謝謝!請蕭大指教指教~
  • 補充在原文最下面了,請自行修改囉

    蕭雲 replied in 2014/05/06 23:06

  • 瑋 梁
  • 以下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
    }

    再一次請問蕭大:如果我只要用AutoHotKey在遊戲裡放技能而已.請問上面語法
    已有開啟與停止.
    那我要再添加啥語法.才可使上面整個語法循環使用呢?
    再次麻煩你賜教.謝囉~
  • 其實這個按下F2就已經是循環使用了啊
    在你按下F3停止計時器之前他應該會持續執行才對
    你可以把時間改短,用在記事本測試看看

    蕭雲 replied in 2014/05/11 23:44

  • so lo
  • ~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
    }

    請教蕭大:上面那個腳本.我研究了3天.也試了3天.還是不懂要怎
    加開頭與尾語法.是否可請蕭大教導一下呢?
    我只是要寫一個在遊戲中.能自動幫放技能的AutoHotKey語法.
    是否可請蕭大幫忙?如可則感激不盡.
  • 首先,請先看一下我上方公告寫的
    "留悄悄話的網友請注意:如果您非痞客邦會員(包含使用FB/Google+帳號),是看不到回覆的喔 "
    你用google帳號,又用悄悄話,等再久也看不到我的回覆喔
    另外,我不是每天都會上blog回留言
    所以如果你很急的話,不妨去google找答案
    (順便一提,其實我當初只是要介紹AutoHotKey
    不知道為什麼會有人來求語法)

    開頭結尾語法,你可以加在F2 大括號裡面的前後
    也就是settimer, skill_1, 200000之前
    跟return之前

    蕭雲 replied in 2014/05/11 23:42

  • so lo
  • 蕭大:不好意思可能你這幾天忙.沒空回.我再重申我的問題.如你有空請幫我看看.
    我想寫一AutoHotKey語法.是單純一開$F9::(例如)後.3個技能(例如分別放:a.s.d鑑).會循環每200秒重複一直放.沒有再使用其他按鍵的語法.因我試你寫的那F2開啟與F3暫停的語法.無反應..
    所以是否可以請你再幫忙寫一個單純:【一開$F9::(例如)後.3個技能(例如分放:a.s.d鑑).會循環每200秒重複一直放】的語法.沒要再使用其他按鍵.也無須暫停功能.
    先說聲謝你~
  • 不好意思,其實我不太能理解你的需求
    你說200秒重複一直放的意思,是放了一次之後要等200秒再放?
    還是200秒內狂按指定按鍵? 如果是後者,200秒完後要做什麼呢?
    前面寫的指令我測試過是可以正常執行的
    如果你是要用在遊戲中的話
    請先確認遊戲有沒有需要用系統管理員執行
    如果有的話,AutoHotKey也需要用系統管理員執行(原文有提醒)

    以下是按了F9之後每200秒按一次a s d鍵
    =======
    $F9::
    {
    settimer, skill_1, 200000
    return
    }

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

    蕭雲 replied in 2014/05/11 23:36

  • so lo
  • 蕭大 首先謝謝你的回覆與教導!
    我意思是有3種技能.且3種技能時間各不相同(例:a是200秒.s是180秒.d是120秒.然後在程式一開後.各別技能在時間到時.可以自已重複一直施放.而不是200秒內連續3種技能一直施放.

    $F9::
    {
    settimer, skill_1, 200000
    return
    }

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

    還有再請教您上面語法.$F9::下面為何沒有Loop(循環).且最底下是 } 符號.
    為何沒有return(重來)呢?這樣上面語法一開時.時間到它會自已循環重複一
    直施放技能嗎?怎跟之前您教過我的不一樣.
    如有時間.煩請幫解惑. 感恩~
    再一請求:怎把上面語法.改成3個各別施放技能的語法.因3個技能時間各不相同.
  • 我猜你應該沒有寫過程式,所以可能看不太懂AutoHotKey的script
    沒有Loop是因為你現在的需求不是要按住按鍵
    而是要持續在固定時間執行特定動作,因此我才改成使用timer (計時器)

    大括號指的是程式區段,也就是
    {
    程式.....
    }
    return的意思是當它執行到這行時就return(返回)
    也就是不要繼續往下執行
    不然它可能會繼續一行行執行

    timer的作用就是持續在固定時間內執行特定動作
    你可以想像成它內部就有一個loop機制,當等了x秒之後就執行動作
    也就是說當我設定settimer, skill_1, 200000
    就是代表我設定了計時器,每200秒去執行skill_1
    而更久之前寫的settimer, skill_1, off
    代表的是關閉計時器
    因此你需要的功能其實就是增加不同的計時器
    去執行按下特定按鍵的動作

    $F9::
    {
    settimer, skill_1, 200000
    settimer, skill_2, 180000
    settimer, skill_3, 120000
    return
    }

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

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

    skill_3:
    {
    Send {d Down}{d Up}
    return
    }

    蕭雲 replied in 2014/05/12 12:50

  • so lo
  • 對了蕭大:
    $F9::
    {
    settimer, skill_1, 200000
    return
    }

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

    上面語法我也試了.可是按F9後卻是毫無反應.為何?
    我照此模式一直修改.卻都是F9按下後都無反應.
    是少了Loop呢.還是最底下不應是 } 這符號?
    還望有空時可以多教導..謝謝~
  • 請問你修改完script之後,有沒有存檔呢?
    存檔了之後有沒有選擇 [Reload This Script]讓它重新載入?
    如果沒有的話它還是會跑舊的script喔

    我給你的script我都有測試能正常執行,所以script應該沒錯
    你可以先在記事本上按F9測試看看
    看會不會在特定時間上按下a s d鍵
    如果在記事本上正常,但是遊戲不正常
    可能是沒有用管理者模式開啟AutoHotKey
    或是遊戲本身有防止這種按鍵精靈型的程式

    PS: 你前面的留言,我幫你取消悄悄話了
    這樣你才可以看到我的回覆

    蕭雲 replied in 2014/05/12 12:55

  • so lo
  • 謝謝蕭大詳細的解說與教導.我本來以為一按下F9就馬上開起程式按鍵.
    剛試的結果是按F9後要等計時器時間到才會開始啟動循環.難怪之前怎
    麼試都以為沒反應.現已懂了.也更了解此程式語法的奧妙.
    再次謝謝您耐心的詳細教導語解說. 感恩~感恩~
  • 不客氣,有幫助到你就好

    蕭雲 replied in 2014/05/13 12:27

  • 訪客
  • 請問假如我喝水 擺在 QWE
    假如我要設定虛擬的..在啟動之後 有什麼辦法 能別讓他跑出q w e..
    我的意思是 我開啟之後 能正常喝水正常聊天
    有辦法嘛
  • 不好意思我真的看不懂你在說什麼
    不過原文我有設定暫停熱鍵F3
    也就是平常按X會連打,但按下F3後這個腳本就會暫停不使用
    等到再度按下F3才會繼續作用
    這樣就可以解決腳本占用平常操作鍵的問題

    蕭雲 replied in 2014/08/17 14:14

  • Miko Lin
  • 蕭大您好歐~
    請問一下,我想要按住1執行,放開1停止我的技能迴圈,
    我在中間加入了這行...
    If Not GetKeyState("1", "P")
    Break
    但是好像不能,出現錯誤訊息...以下是我的迴圈...
    拜託蕭大指點,我該如何修改呢?謝謝~
    =================================
    ~1::
    {
    If Not GetKeyState("1", "P")
    Break
    settimer, skill_1, 200000
    settimer, skill_2, 200000
    return
    }

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

    skill_2:
    {
    Send {2 Down}{2 Up}
    return
    }
  • 錯誤訊息其實蠻明顯的
    Break必須放在Loop中,不然會出錯
    我覺得你的需求不應該用If Not GetKeyState("1", "P")來處理
    而且settimer只須執行一次即可
    建議你參考我文章最後的作法
    把F2 F3改成你指定的開始跟結束按鈕

    蕭雲 replied in 2014/09/01 00:43

  • 訪客
  • 不好意思 這是只能一種鍵 連按嗎? 可以^X^X 或 ^Z^Z 或^^Z 或 ^^X 就是方向鍵加上一種鍵 無限循環這樣有辦法嗎? 感謝您。
  • 你的需求建議是使用我6/22補充的啟動跟關閉計時器的方式來做
    function中改成下方語法即可(可自行修改內容,如要改成按下z就把x改成z即可)
    Send {Up Down}{Up Up}
    Send {x Down}{x Up}
    return

    蕭雲 replied in 2014/10/15 23:12

  • 小祁 蒼
  • 蕭大您好,我想按@或#後 接著可以按出R跟F的腳本...查了很久大多都是分享同一鍵連發的..有這種按一鍵可以接著放出不同鍵的嗎?
  • 可以改成這樣
    以@起頭,R F每0.1秒連發,如果中途按下z自動停止(可自行修改)

    $@::
    Loop
    {
    If GetKeyState("z", "P")
    Break

    Send, R
    Send, F
    Sleep 100
    }
    Return

    蕭雲 replied in 2014/11/12 22:24

  • 洛神
  • 請問判斷顏色要怎麼寫
    血顏色是紅色
    當紅色不等於紅色時即按Q
    妳會寫嗎
    我有看到一個指令
    PixelGetColor
    可以交一下嗎
  • http://www.autohotkey.com/docs/commands/PixelGetColor.htm

    PixelGetColor, OutputVar, X, Y [, Alt|Slow|RGB]
    第一個參數是變數名稱
    第二第三是座標
    比方說寫
    PixelGetColor, color, 100, 23
    就會抓取(100, 23)的顏色存到color這個變數中

    蕭雲 replied in 2014/11/12 22:14

  • 洛神
  • 我再說明白一點好了
    例如按鍵精靈裡有一個是 如果103/23等於00FF00 則不動 反之則按Q
    我要遊戲自動補血用 但總不能一直按Q吧 會破產 但按的慢或少又會一直躺
    可以用這個指令來判斷嗎 PixelGetColor 我舉個例
    直接偵測一個點 然後偵測她的顏色 一改變就按Q 偵測點可以用座標嗎
    但不能用滑鼠鼠標吧 我滑鼠還要打怪用 還是可以抓圖抓色之類的嗎
    然後大概就這樣 我是看不太懂 可以幫忙研究看看嗎
    這個是我唯一可以用在遊戲上的
    其他的軟體 不是被封鎖 就是在遊戲上不支援(就是沒反應)有跟沒有一樣
    所以我求求妳了
  • 其實我不知道為什麼有這麼多人留言要我寫腳本給他...
    我當時寫這篇就是希望大家自己研究啊...

    你要求的語法如下
    座標、執行頻率、顏色判斷等可自行修改
    ====
    ; 座標
    HPX := 103
    HPY := 23

    ; 計時器多久執行一次(單位毫秒)
    Frequency := 1000

    SetTimer, CheckHP, %Frequency%

    CheckHP:
    PixelGetColor, color, %HPX%, %HPY%

    if (color = 0x00FF00) {
    Send, Q
    Sleep 1000
    }


    ^ESC::
    ExitApp ; Ctrl+ESC 強制關閉

    蕭雲 replied in 2014/11/12 22:11

  • 洛神
  • 這段程式碼 不是沒反應就是一直按
    我這樣寫對嗎
    然後正確的抓座標跟顏色你會用ALT抓嗎 ALT是什麼
    還是怎麼抓的
    我是用按鍵精靈的抓圖 然後抓座標 再抓顏色 但都沒反應


    ; 座標
    X := 187
    Y := 48

    ; 計時器多久執行一次(單位毫秒)
    Frequency := 1000

    SetTimer, CheckHP, %Frequency%

    CheckHP:
    PixelGetColor, color, %HPX%, %HPY%

    if (color = 0x404040) {
    Send, Q
    Sleep 1000
    }


    ^ESC::
    ExitApp ; Ctrl+ESC 強制關閉
  • 洛神
  • 算了 我放棄了
    遊戲無法取色 都是0X000000
    我無言了阿
    蒼天助遊戲不助我阿
    天理何在 美女何在
  • 我用windows測試時是可以正常取色的
    遊戲是怎麼處理我就不清楚了
    沒幫上忙不好意思

    蕭雲 replied in 2014/12/04 22:56

  • 流亡
  • 請問關於抓色自動判斷有
    我抓取顏色0x1F1E2D 當不是這個顏色時才自動按鍵嗎
    上面的腳本好像是抓取顏色直接觸發
    有抓取顏色當不是這顏色時才觸發的指令嗎
  • 不是的話就把=改成!=就可以了啊...

    蕭雲 replied in 2014/12/04 22:57

  • ghostxi
  • 請大大幫忙,我一直出錯Break這個部分
    以下為腳本有2個視窗,一個是遊戲視窗一個是計算讀取速度的視窗
    我的用意是速度沒有超過9的,就繼續執行刷地圖腳本
    可是真的寫不出來,希望大大能幫忙指導一下,謝謝。
    ;---------------------重刷地圖-------------------
    ~F9::
    {
    settimer, skill_1, 4000
    return
    }
    ~F10::
    {
    settimer, skill_1, off
    return
    }

    skill_1:
    IfWinActive, Path of Exile
    {
    WinActivate
    BlockInput On

    Click 978, 454, 0
    Sleep, 100
    MouseClick, left, 978, 454 ;傳送點
    Sleep, 100

    Click 257, 422, 0
    Sleep, 100

    Send, {CTRLDOWN}
    MouseClick, left, 257, 422 ;選擇傳送地點
    Sleep, 100
    Send, {CTRLUP}

    Click 1222, 654, 0 ;移動到副本選單
    Sleep, 100
    Loop 60
    Click WheelDown
    Sleep, 200

    Click 473, 863, 0 ;移動到新副本按鈕上
    Sleep, 500

    MouseClick, left, 473, 863
    Sleep, 100

    Sleep, 1300
    settimer, skill_2, 2000

    BlockInput Off
    return
    }
    skill_2:

    Click 130, 100, 1
    Sleep, 500
    ControlGetText, OutputVar
    Click 938, 16, 1
    Sleep, 500


    if (OutputVar <= 8)
    break

    return
  • 其實錯誤訊息已經寫得很清楚啦
    Break/Continue must be enclosed by a Loop
    意思就是Break或Continue必須放在迴圈中

    我不懂你寫的
    if (OutputVar <= 8)
    break
    這段的目的,你是想把計時器停下來還是?
    如果只是要跳離函式的話直接return即可

    蕭雲 replied in 2014/12/04 23:03

  • 花歌
  • 請問要移動滑鼠的時候能控制他的速度嗎
    讓她慢慢移動到這個位置
    然後慢慢的點擊左鍵

    MouseMove, 520, 520
    MouseClick, Left



    我找到一個..能用嗎...具體應該怎麼加進去...我都腳本錯誤
    SetDefaultMouseSpeed,0 ; 速度0~100


  • 你找到的方法我測試是不會有問題的
    不過你輸入的那一行,逗號是全形,這樣子當然是不行的
    提供我測試的範例給你參考

    ~F9::
    {
    SetDefaultMouseSpeed, 50
    MouseMove, 50, 50
    return
    }

    蕭雲 replied in 2015/01/02 23:34

  • 訪客
  • 不好意思請問一下
    我只是把AutoHotKey.ahk的文字清空關閉時不小心存檔
    之後就完全打不開AutoHotKey.ahk了
    重新安裝之後還是一樣
    所以就用記事本把他開起輸入我要的Script
    但是無論怎麼改AutoHotKey.ahk的內容都無效
    重裝也不會產生新的Script
    請問這種情形該怎麼辦?
  • 不太了解你的意思...
    打不開指的是有出現什麼錯誤訊息嗎?
    我嘗試把內容清空也不會有錯誤訊息
    此外我測試過如果把AutoHotKey.ahk刪掉
    打開AutoHotKey時他就會詢問是否要產生一個範本檔
    請試著刪除看看

    蕭雲 replied in 2015/02/05 00:45

  • Hi
  • 我設置了Space::F2
    因為空白鍵對我來說比較好按!
    但是打字時需要空白鍵的功能, 縮小視窗關掉Hotkey實在太麻煩!
    想問你有沒有按下F1後啟動Space::F2的功能, 再按一次F1關閉該功能的腳本?
    謝謝你!
  • 你可以像我的範例一樣在最前面加上

    ~F1::suspend

    這樣按下F1後這個腳本就會被暫停執行了

    蕭雲 replied in 2015/02/05 00:50

  • 吉祥瑞雲
  • 謝謝你的教學^_^ 感謝~
  • 神
  • 請問一下喔
    按住ALT再按鍵盤左邊的2要怎麼寫
    我怎麼寫他都只按!2而已
    但!不是ALT嗎 他只會按!不是按ALT
    然後記得放開 我要循環腳本的
    F5開始 F6暫停或結束
    謝謝
  • 神
  • 妳真是個好人
    再請問一下
    MouseMove, 451, 391, 50,R
    要怎麼只移動上面一點點就好
    R移動太多了 R要怎麼設 我只要他單純往上一點點

You haven’t logged in yet, please use guest status to leave message. You can also log in with above service account and leave message

other options