AutoHotkey를 활용한 마우스 및 키보드 자동화 스크립트 구현 가이드

반복 작업 자동화의 필요성

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)이 충돌하지 않는지 확인한다.

태그: AutoHotkey Windows_Automation Scripting Mouse_Control GUI_Automation

6월 26일 00:49에 게시됨