반복 작업 자동화의 필요성
GUI 환경에서 동일한 마우스 클릭이나 키보드 입력을 반복하는 작업은 생산성을 저하시키고 피로도를 증가시킨다. AutoHotkey(AHK)는 Windows 환경에서 이러한 반복적인 입력 장치를 제어하고 자동화할 수 있는 강력한 스크립트 언어를 제공한다. 본 가이드에서는 마우스 제어 및 조건부 트리거를 활용한 자동화 스크립트 작성 방법을 다룬다.
기본 마우스 제어 및 좌표 클릭
단순 클릭 및 특정 좌표 타겟팅
가장 기본적인 마우스 왼쪽 클릭은 단일 명령어로 매핑할 수 있다. 또한, 화면의 절대 좌표를 지정하여 특정 UI 요소를 자동으로 클릭하도록 구성할 수 있다. 좌표 확인은 AHK 설치 시 제공되는 Window Spy 유틸리티를 활용한다.
; F1 키를 눌러 현재 마우스 커서 위치에서 왼쪽 클릭 실행
F1::
Click
return
; Win + 1 단축키로 화면의 특정 좌표(X: 850, Y: 420) 클릭
#1::
MouseClick, left, 850, 420
return
고급 마우스 동작 및 드래그 구현
다양한 클릭 유형 및 드래그 앤 드롭
더블 클릭, 우클릭, 휠 클릭 등 다양한 마우스 이벤트를 발생시키거나, 클릭 상태를 유지한 채 커서를 이동하여 드래그 작업을 수행할 수 있다.
; F2: 더블 클릭
F2::Click, 2
; F3: 오른쪽 버튼 클릭
F3::Click, right
; F4: 휠(가운데) 버튼 클릭
F4::Click, middle
; F5: 드래그 앤 드롭 시뮬레이션 (현재 위치에서 X축으로 150픽셀 이동)
F5::
MouseClick, left, , , , , D ; 왼쪽 버튼 누름 상태 유지 (Down)
Sleep, 50 ; 시스템 반응 대기
MouseMove, 150, 0, 10, R ; 상대 좌표(R)로 X축 150 이동, 속도 10
Sleep, 50
MouseClick, left, , , , , U ; 왼쪽 버튼 떼기 (Up)
return
조건부 실행 및 컨텍스트 인식
특정 윈도우 및 시간대 제한
스크립트가 시스템 전체에서 항상 동작하는 것을 방지하기 위해, 특정 애플리케이션이 포커스를 받고 있을 때만 단축키가 활성화되도록 제한할 수 있다. 또한, 시스템 시간을 확인하여 특정 시간대에만 자동화가 실행되도록 조건문을 추가할 수 있다.
; 메모장(Notepad)이 활성화된 상태에서만 F6 단축키 작동
#IfWinActive, ahk_class Notepad
F6::
Click, 120, 250
return
#IfWinActive
; F7: 업무 시간(09:00 ~ 18:00) 내에 좌표 클릭 실행
F7::
FormatTime, currentHour,, HH
if (currentHour >= 9 && currentHour < 18) {
Click, 450, 600
ToolTip, 자동화 작업이 성공적으로 실행되었습니다.
} else {
ToolTip, 지정된 업무 시간이 아니므로 작업이 건너뛰어집니다.
}
Sleep, 1500
ToolTip
return
실무 적용 사례: 오피스 및 웹 자동화
데이터 입력 및 웹 폼 제출
키보드 입력과 마우스 클릭을 결합하여 엑셀 데이터 입력이나 웹 브라우저의 로그인 폼 작성을 자동화할 수 있다. 안정적인 입력을 위해 SendInput 명령을 사용하는 것이 권장된다.
; Ctrl + Alt + D: 현재 날짜 입력 후 다음 셀로 이동 (엑셀 환경)
^!d::
FormatTime, todayDate,, yyyy-MM-dd
SendInput, %todayDate%{Tab}
return
; Ctrl + Shift + L: 웹 로그인 폼 자동 작성 및 제출
^+l::
Click, 500, 350 ; 아이디 입력 필드 클릭
SendInput, admin_user ; 아이디 입력
SendInput, {Tab} ; 비밀번호 필드로 이동
SendInput, securePass123 ; 비밀번호 입력
SendInput, {Enter} ; 폼 제출
return
스크립트 디버깅 및 충돌 방지
재귀 호출 방지 및 핫키 상태 모니터링
자동화 스크립트에서 Send 명령으로 핫키 자체를 전송할 경우 무한 루프에 빠질 수 있다. 이를 방지하기 위해 $ 접두사를 사용한다. 또한, 현재 메모리에 로드된 핫키의 상태를 진단할 수 있다.
; $ 접두사를 사용하여 F8 키 자체를 전송할 때 재귀 호출 방지
$F8::
Send, {F8}
Click
return
; F12: 현재 활성화된 핫키 및 후크 상태 목록 출력
F12::
ListHotkeys
return
스크립트 미작동 시 점검 항목
- 파일 확장자가
.ahk로 올바르게 지정되었는지 확인한다. - 운영체제 보안 정책(UAC)이나 백신 소프트웨어가 스크립트 실행을 차단하지 않는지 점검한다.
- 다른 상주 프로그램이 동일한 단축키를 선점하여 글로벌 훅(Hook)이 충돌하지 않는지 확인한다.