2017年11月26日 星期日

用 AutoHotkey 自動點擊網頁按鈕

最近要在某個網站上填報資料,填報資料不是問題,但是這個網站每隔幾分鐘就得存檔一次,否則會將你踢出網站,讓填報的資料全化為虛無 ── 這讓我滿困擾的,健忘的我常常忘了按存檔而讓努力化為流水。

為了解決這個問題,我打算用 AutoHotkey 幫我點擊存檔按鈕,讓 AutoHotkey 每隔 3 分鐘就去按畫面上的存檔按鈕,這樣就不怕忘記存檔了。

在 AutoHotkey 中讓按下滑鼠左鍵的指令是 Click,很直覺,所以就寫了一個小小的指令讓 AutoHotkey 執行,結果剛開始都按不到按鈕,明明已經用軟體測得螢幕座標了怎麼還是按不到?!後來才知道 AutoHotkey 預設是以活動視窗為基準點,以活動視窗的相對位置來移動滑鼠,我切換個視窗,那基準點數值就變了,難怪一直按錯地方。

找了一下 AutoHotkey 的說明,發現要解決這個問題並不難,加一行 CoordMode, Mouse, Screen 命令就 OK 了。這一行指令告訴 AutoHotkey 祇要是滑鼠相關指令都要以視窗絕對座標為移動基準。加了這行指令後果然就依照我的需要來點擊滑鼠左鍵,我不用擔心太久沒按按鈕被網站踢出去了。

整個指令如下:

; 設定滑鼠的操作以畫面絕對座標為主
; 並設定一個 3 分鐘的 Timer
; 每隔 3 分鐘執行一次 MouseNan 函式
#Persistent
    CoordMode, Mouse, Screen
    SetTimer, MouseNan, 180000

; MouseNan 函式內容
; 滑鼠移動前先記錄當前位置
; 然後移動到 1780, 330 並按下滑鼠左鍵,
; 回到原本的位置,按一下左鍵,讓視窗回復為活動視窗
MouseNan:
    MouseGetPos, xpos, ypos
    Click, 1780, 330 
    Click, %xpos% , %ypos%
    return

附註:因為我填報的是很多欄數字,所以用 AutoHotkey 比較適合,如果填報的是大片文字,那麼 Chrome 使用者可以安裝 Lazarus 套件,它會隨時記錄文字輸入區的內容,當機後還可以恢復,相當方便。