[AutoHotKey]-MyAutoClick - 犬大叔在幼稚中- 痞客邦

文章推薦指數: 80 %
投票人數:10人

之前介紹過用AutoHotKey寫出腳本[AutoHotKey]-TsumTsum自動收心程式1 讓Tsum Tsum能以模擬器自動收心 ... 將滑鼠點擊的位置以及順序記錄在文字檔中. 關閉廣告 犬大叔在幼稚中 跳到主文 汪汪... 部落格全站分類:不設分類 相簿 部落格 留言 名片 Jan10Sun201601:16 [AutoHotKey]-MyAutoClick   之前介紹過用AutoHotKey寫出腳本 [AutoHotKey]-TsumTsum自動收心程式1 讓TsumTsum能以模擬器自動收心的MyAutoClick MyAutoClick的基本運作: 1.將滑鼠點擊的位置以及順序記錄在文字檔中 2.從該文字檔依序讀取滑鼠點擊的位置 3.移動滑鼠至該位置並執行點擊的動作 4.重複動作2.到3.,直到程式被終止或是重新讀入腳本的命令發生 此篇就接續著來介紹腳本內容是如何編寫的。

AutoHotKey是一種能依照簡單的語法寫出的動作腳本 在電腦上自動執行的軟體工具 首先可以從AutoHotKey的官網中取得主程式 之後若沒有特殊改動,則預設的腳本位置在 C:\Users\user\Documents\AutoHotkey.ahk 我們初期就先用這個AutoHotkey.ahk來編輯 第一個測試,將以下的綠色文字貼到AutoHotkey.ahk中: ;;;;;;;;;;[從這一行開始複製];;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ~LButton&m:: Msgbox,嗨!世界! return ;;;;;;;;;;[複製到這裡結束];;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 執行AutoHotKey之後 我們按住滑鼠左鍵加上鍵盤的字母'm' 就會出現如下的對話框:   如果您也看到!恭喜!您已經學會使用AutoHotKey啦! 簡單解說一下: 分號';'是註解的意思,也就是在分號之後輸入的同列文字都不會被當作腳本來執行 ~LButton:指的是按住滑鼠左鍵的意思 &m:表示接連前面的組成複合按鍵以觸動以下的腳本動作 Msgbox:顯示一個(基本)提示對話視窗 return:表示此段動作結束 所以最基本的AutoHotKey腳本的組成: 1.觸發的按鍵組合::  2.動作腳本 3.動作結束(return) 接著我們改動內容如下: ;;;;;;;;;;[從這一行開始複製];;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ~LButton&m:: Msgbox,嗨!世界!我的第一個AutoHotKey程式 return ;;;;;;;;;;[複製到這裡結束];;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 儲存之後,我們要更新腳本,讓AutoHotKey重新讀入   從右下角的常駐圖示-->右鍵-->選擇"ReloadThisScript" 如此就能使AutoHotKey重新讀入腳本 看到對話視窗的內容改變了! 對於正在編寫腳本測試,要一直重複此動作,是否很不方便(懶...)? 因此第一個宅犬編寫AutoHotKey最常用的功能就是: ;●●●重新載入Autohotkey的腳本ahkMouse(L)+r ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ~LButton&r:: reload;重新讀入腳本 return ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 看懂了嗎?就是: 1.按住滑鼠左鍵加上'r'後 2.執行重新讀入腳本(reload) 3.腳本結束(return) 有了這個動作腳本之後,我們就能修改完成 就住滑鼠左鍵+'r'來重新讀入腳本 此外,reload的命令還有個額外的附加作用 能夠立刻中止目前正在執行的腳本 這是很重要的指令! 當編寫過程測試時,萬一動作失控 可以立刻執行此一動作來中止世界的毀滅呀! 歡迎加入懶人的世界!! 好了正式來介紹MyAutoClick的腳本吧! 1.重設記錄檔(Clear) 當對應的滑鼠順序位置改變時,需要重新定位 就得將原來的紀錄檔C:\MyAutoClick.txt清除 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ~LButton&c:: FileDelete,C:\MyAutoClick.txt  ;;;先刪除檔案 FileAppend,,C:\MyAutoClick.txt ;;;建立空白的檔案 return ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 觸動按鍵組合:按住滑鼠左鍵+'c'(clear) 2.紀錄滑鼠座標(Get) 取得滑鼠座標,並記錄在檔案C:\MyAutoClick.txt中 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ~LButton&g:: CoordMode,Mouse,Screen ;;;將滑鼠的座標系統對應到螢幕上 MouseGetPos,xpos,ypos,,,1 ;;;取得滑鼠的座標 FileAppend,              ;;;加入到檔案尾端 ( %xpos%   ;;;寫入X座標 %ypos%   ;;;寫入Y座標 ),C:\MyAutoClick.txt; ;;;指定寫入的檔案 ToolTip,取得:X%xpos%Y%ypos%  ;;;顯示提示訊息取得的X,Y座標 return ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 觸動按鍵組合:按住滑鼠左鍵+'g'(get) 3.從檔案中讀取座標,並自動(Auto)依序點擊 這裡是MyAutoClick最核心的部分 將X,Y座標依序從C:\MyAutoClick.txt讀出 並移動滑鼠至該位置並執行點擊的動作 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ~LButton&a::  CoordMode,Mouse,Screen    ;;;將滑鼠的座標系統對應到螢幕上  XArray:=Object()  ;;;宣告座標軸的陣列物件,用以依序儲存滑鼠X,Y座標  XArray[j]:=A_LoopField  XArray[j,k]:=A_LoopReadLine          Loop,Read,C:\MyAutoClick.txt ;;;依序讀取檔案中的每一行  {    XArrayCount+=1 ;;;紀錄讀取紀錄總數    XArray[XArrayCount]:=A_LoopReadLine ;;;讀取一行放入陣列  }  XArrayCount/=2 ;;;由於一次需要兩筆座標紀錄(X,Y),因此記錄總數需要除以2  Sleep,500  ;;;給予輸入組合按鍵後的緩衝時間,避免影響到滑鼠的位置  Loop  ;;;重複執行,不指定重複次數,直到重新讀入腳本或是程式終止  {     nowIndx:=1  ;;;紀錄目前讀到陣列的位置,初始化為1     Loop%XArrayCount% ;;;依照座標組數重複執行    {      nowX:=XArray[nowIndx]    ;;;讀入第一筆為X座標      newY:=XArray[nowIndx+1]  ;;;讀入第二筆為Y座標      mousemove,%nowX%,%newY%,50, ;;;移動滑鼠到該位置      MouseClick    ;;;執行滑鼠點擊動作      Sleep,500     ;;;給予作用對象程式的反應時間      nowIndx+=2  ;;;跳至下一組X,Y位置    }  } return ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 在C:\MyAutoClick.txt 中紀錄的數值將如下: 1172 1055 1388 1059 31 39 784 14 869 18 因此必須讀取的是 X:1172



請為這篇文章評分?