ETC/Auto Hotkey

AutoHotkey로 창 컨트롤 마스터하기: 자동화의 핵심

shimdh 2025. 10. 27. 14:13
728x90

AutoHotkey는 단순한 키보드와 마우스 자동화 도구를 넘어, Windows 애플리케이션의 창과 그 내부 컨트롤을 직접 조작하는 강력한 기능을 제공합니다. 이 글에서는 AutoHotkey를 활용해 창 컨트롤을 효과적으로 다루는 방법을 탐구하며, 실전 예시와 팁을 통해 여러분의 자동화 스킬을 한 단계 업그레이드하는 데 초점을 맞춥니다. 초보자부터 고급 사용자까지, 이 가이드를 따라하면 복잡한 워크플로를 간단한 스크립트로 자동화할 수 있을 거예요.

728x90

컨트롤 이해하기: UI 요소의 구성

모든 Windows 애플리케이션 창은 버튼, 텍스트 상자, 드롭다운 메뉴 등 다양한 사용자 인터페이스(UI) 요소로 이루어져 있습니다. AutoHotkey에서 이들을 '컨트롤(Control)'이라고 부르며, 각 컨트롤은 고유한 식별자(예: ClassNN)를 가집니다. 이 식별자를 통해 스크립트가 정확히 타겟팅할 수 있어요.

컨트롤을 식별하는 데 핵심 도구는 AutoHotkey와 함께 제공되는 Window Spy입니다. 이 도구를 실행하면 마우스를 올린 창의 컨트롤 정보를 실시간으로 확인할 수 있습니다. 예를 들어, 메모장의 텍스트 영역은 Edit1로 표시될 수 있어요.

일반적인 컨트롤 유형

  • 버튼(Button): 클릭으로 작업을 트리거합니다. (예: '저장' 버튼)
  • 편집 필드(Edit): 텍스트 입력 공간입니다. (예: 검색 바)
  • 콤보 상자(ComboBox): 드롭다운으로 선택지를 제공합니다.
  • 체크 상자(CheckBox) / 라디오 버튼(Radio): 옵션 선택을 위한 토글 요소입니다.
  • 리스트 뷰(ListView): 목록 아이템을 표시하고 선택합니다.
  • 슬라이더(Slider): 값 조정을 위한 슬라이드 바입니다.

이 컨트롤들을 파악하는 게 자동화의 기반입니다. Window Spy를 자주 사용해 보세요 – 처음엔 낯설지만, 곧 필수 도구가 될 거예요.

AutoHotkey를 이용한 컨트롤 상호 작용 방법

AutoHotkey는 컨트롤을 위한 전용 명령어를 제공합니다. 창이 포커스되지 않은 상태(백그라운드)에서도 동작하는 점이 큰 장점이에요. 아래에서 주요 명령어를 예시와 함께 살펴보죠.

1. ControlSend: 포커스 없이 키 입력 보내기

창이 활성화되지 않아도 특정 컨트롤에 텍스트나 키를 전송합니다. 멀티태스킹 시 유용해요.

예시 스크립트 (메모장에 텍스트 입력):

#NoEnv  ; 권장 설정
SendMode Input  ; 권장 설정

ControlSend, Edit1, Hello World!, ahk_class Notepad  ; 메모장의 Edit1에 텍스트 전송

이 코드는 메모장이 백그라운드에 있어도 "Hello World!"를 입력합니다. ahk_class는 창의 클래스 이름으로, Window Spy로 확인하세요.

2. ControlClick: 마우스 클릭 시뮬레이션

버튼 클릭, 체크박스 토글 등 마우스 동작을 자동화합니다. 좌클릭 외에 우클릭이나 더블클릭도 지원해요.

예시 스크립트 (계산기 버튼 클릭):

ControlClick, Button1, ahk_class CalcFrame  ; 계산기의 첫 번째 버튼 클릭

이 스크립트로 계산기 앱의 '1' 버튼을 클릭할 수 있습니다. 옵션으로 {Right}를 추가해 우클릭도 가능해요.

3. ControlGet: 컨트롤 정보 가져오기

컨트롤의 텍스트, 상태, 위치 등을 조회합니다. 조건부 자동화(예: 값 확인 후 동작)에 필수적입니다.

예시 스크립트 (편집 필드 내용 출력):

ControlGet, outputVar, Text,, Edit1, ahk_class Notepad
MsgBox, %outputVar%  ; 변수 내용을 메시지 박스로 표시

이 코드는 메모장의 Edit1 내용을 변수에 저장하고 출력합니다. 체크박스 상태는 ControlGet, IsChecked, Checked,, Check1처럼 사용하세요.

4. ControlSetText: 컨트롤 내용 변경하기

편집 필드나 라벨의 텍스트를 직접 수정합니다. 반복 입력 작업을 줄여줍니다.

예시 스크립트 (텍스트 필드 업데이트):

ControlSetText, Edit1, New Text Here!, ahk_class MyApp

이 명령으로 앱의 입력 필드를 즉시 "New Text Here!"로 변경할 수 있어요. 기존 내용을 지우지 않고 덮어쓰니 주의하세요.

5. ControlMove / ControlResize: 컨트롤 동적 조정

컨트롤의 위치나 크기를 변경합니다. UI 커스터마이징이나 테스트 시나리오에 적합합니다.

예시 스크립트 (버튼 이동 및 크기 조정):

ControlMove, Button2, 100, 100, 50, 30, ahk_class MyApp  ; x=100, y=100으로 이동, 너비=50, 높이=30으로 조정

이 코드는 MyApp 창의 Button2를 지정 위치로 옮기고 크기를 조정합니다. 고급 사용자라면 창 레이아웃을 동적으로 재배치할 수 있어요.

실제 적용 시나리오: Excel 자동화 예시

Excel에서 셀 입력을 자주 한다면, AutoHotkey가 큰 도움이 됩니다. 아래 스크립트는 Excel을 열고 A1 셀에 "Hello"를 입력하는 과정을 자동화합니다. (Excel이 설치되어 있다고 가정)

전체 스크립트:

#NoEnv
SendMode Input

Run, excel.exe  ; Excel 실행
WinWaitActive, ahk_class XLMAIN  ; Excel 창 활성화 대기 (제목이 변할 수 있으니 클래스 사용)

Sleep, 1000  ; 로딩 시간 여유

; F5로 '이동' 대화상자 열기
ControlSend, , {F5}, ahk_class XLMAIN
Sleep, 500

; '이동' 대화상자의 Edit1에 A1 입력 후 Enter
ControlSend, Edit1, A1{Enter}, ahk_class #32770  ; #32770은 대화상자 클래스
Sleep, 500

; A1 셀에 Hello 입력 후 Enter
ControlSend, , Hello{Enter}, ahk_class XLMAIN
MsgBox, Excel 자동화 완료! A1 셀에 'Hello' 입력됨.

이 스크립트는 수동 입력 없이 전체 과정을 처리합니다. 실제로 사용 시 Sleep 시간을 조정하고, 오류 처리를 추가하세요 (예: WinExist로 창 확인).

결론: 자동화의 새로운 지평 열기

AutoHotkey의 창 컨트롤 기능을 마스터하면, 단순 반복을 넘어 복잡한 애플리케이션 워크플로를 자유자재로 제어할 수 있습니다. ControlSend로 백그라운드 입력, ControlClick으로 클릭 자동화, ControlGet으로 상태 확인 등 핵심 명령어를 익히면 생산성이 폭발적으로 증가할 거예요. 지금 바로 Window Spy를 열고 여러분의 앱을 분석해 보세요. 작은 스크립트부터 시작하면, 곧 자동화 전문가가 될 수 있습니다!

728x90