반응형

🎯 이 글에서 배우는 것: Send로 키 입력, Click/MouseMove로 마우스 제어
⌨️ Send - 키보드 입력 보내기
Send는 AutoHotkey의 핵심 함수입니다. 마치 유령이 키보드를 치는 것처럼 동작합니다!
기본 사용법
Send("Hello World") ; Hello World 입력
특수 키 입력
특수 키는 중괄호 {}로 감쌉니다:
Send("{Enter}") ; 엔터키
Send("{Tab}") ; 탭키
Send("{Backspace}") ; 백스페이스
Send("{Delete}") ; 삭제
Send("{Escape}") ; ESC
Send("{Space}") ; 스페이스 (또는 그냥 " ")
방향키와 기능키
Send("{Up}") ; 위 화살표
Send("{Down}") ; 아래 화살표
Send("{Left}") ; 왼쪽 화살표
Send("{Right}") ; 오른쪽 화살표
Send("{Home}") ; Home키
Send("{End}") ; End키
Send("{PgUp}") ; Page Up
Send("{PgDn}") ; Page Down
Send("{F1}") ; F1키
Send("{F12}") ; F12키
🎹 수식키와 함께 보내기
수식키 기호 (Send용)
| 기호 | 키 |
|---|---|
^ |
Ctrl |
! |
Alt |
+ |
Shift |
# |
Win |
예제
Send("^c") ; Ctrl+C (복사)
Send("^v") ; Ctrl+V (붙여넣기)
Send("^a") ; Ctrl+A (전체 선택)
Send("^s") ; Ctrl+S (저장)
Send("!{F4}") ; Alt+F4 (창 닫기)
Send("^+{Escape}") ; Ctrl+Shift+Esc (작업 관리자)
Send("#{Tab}") ; Win+Tab (작업 보기)
여러 키 조합
; 전체 선택 후 복사
Send("^a")
Send("^c")
; 또는 한 줄로
Send("^a^c")
🔁 키 반복 입력
같은 키를 여러 번 입력:
Send("{Enter 5}") ; 엔터 5번
Send("{Tab 3}") ; 탭 3번
Send("{Backspace 10}") ; 백스페이스 10번
Send("{Down 20}") ; 아래 화살표 20번
문자 반복
Send("{a 10}") ; aaaaaaaaaa
⏱️ 키 누르고 있기
키를 누른 상태로 유지하거나 떼기:
Send("{Shift down}") ; Shift 누름 (유지)
Send("hello") ; HELLO 입력됨 (Shift 상태)
Send("{Shift up}") ; Shift 뗌
; Ctrl 누른 상태로 여러 동작
Send("{Ctrl down}")
Send("a") ; Ctrl+A
Send("c") ; Ctrl+C
Send("{Ctrl up}")
📝 SendText vs Send
특수 문자를 있는 그대로 보내려면 SendText 사용:
; Send는 특수문자 해석
Send("^c") ; Ctrl+C로 해석됨
; SendText는 문자 그대로
SendText("^c") ; ^c 문자가 입력됨
SendText("!@#$%") ; !@#$% 그대로 입력
언제 어떤 걸 쓸까?
| 상황 | 사용할 함수 |
|---|---|
| 단축키 실행 | Send("^c") |
| 일반 텍스트 | Send("Hello") 또는 SendText("Hello") |
| 특수문자 포함 텍스트 | SendText("가격: $100 (50% 할인)") |
| 코드/수식 입력 | SendText("if (x > 5) { return; }") |
🖱️ Click - 마우스 클릭
기본 클릭
Click ; 현재 위치에서 왼쪽 클릭
Click "Right" ; 우클릭
Click "Middle" ; 가운데 클릭 (휠)
Click 2 ; 더블클릭
좌표 지정 클릭
Click 100, 200 ; (100, 200) 위치에서 클릭
Click 100, 200, "Right" ; 우클릭
Click 100, 200, 2 ; 더블클릭
현재 위치 기준 상대 이동
Click 50, 30, 0, "Rel" ; 현재 위치에서 오른쪽 50, 아래 30으로 이동 (클릭 없음)
🐭 MouseMove - 마우스 이동
절대 좌표 이동
MouseMove 500, 300 ; (500, 300)으로 이동
상대 좌표 이동
MouseMove 100, 50, , "R" ; 현재 위치에서 오른쪽 100, 아래 50
MouseMove -50, -30, , "R" ; 왼쪽 50, 위 30
이동 속도
MouseMove 500, 300, 50 ; 속도 50 (0-100, 0이 가장 빠름)
MouseMove 500, 300, 0 ; 즉시 이동
MouseMove 500, 300, 100 ; 천천히 이동
📍 좌표 확인하기 - Window Spy
마우스 좌표를 어떻게 알 수 있을까요? Window Spy를 사용합니다!
Window Spy 실행 방법
- 시스템 트레이의 AHK 아이콘 우클릭
- Window Spy 선택
- 마우스를 움직이면 실시간으로 좌표 표시!
표시되는 정보
Mouse Position:
Screen: 1234, 567 ← 화면 전체 기준
Window: 234, 167 ← 현재 창 기준
Client: 220, 150 ← 창 클라이언트 영역 기준
🎯 좌표 모드 (CoordMode)
좌표 기준점을 설정합니다:
CoordMode "Mouse", "Screen" ; 전체 화면 기준 (기본값)
CoordMode "Mouse", "Window" ; 활성 창 기준
CoordMode "Mouse", "Client" ; 창의 클라이언트 영역 기준
언제 뭘 쓸까?
| 상황 | 권장 모드 |
|---|---|
| 창 위치가 바뀌어도 동작해야 함 | Window 또는 Client |
| 화면 특정 위치 (작업표시줄 등) | Screen |
| 게임 매크로 | Client |
🔧 실용적인 예제
예제 1: 자동 로그인 (개념)
#l::{ ; Win+L로 실행
; ⚠️ 실제 비밀번호 저장은 위험! 예시일 뿐
Send("myusername")
Send("{Tab}")
Send("mypassword")
Send("{Enter}")
}
예제 2: 화면 특정 위치 클릭
F1::{
Click 1920, 1080 ; 화면 특정 위치 클릭
Sleep 500 ; 0.5초 대기
Click 1920, 1080, 2 ; 더블클릭
}
예제 3: 마우스 좌표 표시
^m::{ ; Ctrl+M
MouseGetPos(&x, &y)
MsgBox("현재 마우스 좌표: " x ", " y)
}
예제 4: 드래그 앤 드롭
F2::{
Click 100, 100, "Down" ; (100, 100)에서 마우스 버튼 누름
MouseMove 300, 300 ; (300, 300)으로 이동
Click "Up" ; 마우스 버튼 뗌
}
예제 5: 간단한 그리기 매크로
F3::{
Loop 4 {
MouseMove 100, 0, 10, "R" ; 오른쪽으로 100
Sleep 100
MouseMove 0, 100, 10, "R" ; 아래로 100
Sleep 100
}
}
⏰ Sleep - 대기하기
동작 사이에 시간 지연이 필요할 때:
Send("^s") ; 저장
Sleep 1000 ; 1초(1000ms) 대기
Send("^w") ; 창 닫기
밀리초 단위
| 값 | 시간 |
|---|---|
| 100 | 0.1초 |
| 500 | 0.5초 |
| 1000 | 1초 |
| 5000 | 5초 |
⚠️ 주의사항
1. 너무 빠른 입력
프로그램이 따라오지 못할 수 있습니다:
; ❌ 문제 발생 가능
Send("^o") ; 파일 열기 대화상자
Send("myfile.txt")
Send("{Enter}")
; ✅ Sleep 추가
Send("^o")
Sleep 500 ; 대화상자 열릴 때까지 대기
Send("myfile.txt")
Sleep 200
Send("{Enter}")
2. 창 활성화 확인
원하는 창이 활성화되어 있는지 확인:
#IfWinActive "메모장"
^1::Send("메모장에서만 작동!")
#IfWinActive
3. 게임에서 안 될 때
게임은 보통 SendInput이 필요:
SendMode "Input" ; 가장 빠르고 안정적
; 또는
SendMode "Play" ; 게임에서 더 잘 작동할 수 있음
🎮 실습 과제
- Win+1 → 메모장 열고 "Hello World" 입력
- Ctrl+Shift+D → 현재 날짜를 "2024-01-15" 형식으로 입력
- F5 → 마우스를 화면 중앙(960, 540)으로 이동 후 클릭
정답 보기 👀
#Requires AutoHotkey v2.0
#1::{
Run "notepad"
Sleep 500
Send "Hello World"
}
^+d::{
Send FormatTime(, "yyyy-MM-dd")
}
F5::{
MouseMove 960, 540, 0
Click
}
📚 다음 시간 예고
다음 글에서는 Run과 창 관리를 배웁니다:
- 프로그램 실행 (Run)
- 창 활성화/대기 (WinActivate, WinWait)
- 창 제어 (WinMove, WinClose)
프로그램 제어의 달인이 되어봅시다! 🪟
🔑 오늘 배운 핵심 정리
| 함수 | 용도 | 예제 |
|---|---|---|
Send() |
키 입력 | Send("^c") |
SendText() |
텍스트 그대로 | SendText("$100") |
Click |
마우스 클릭 | Click 100, 200 |
MouseMove |
마우스 이동 | MouseMove 500, 300 |
Sleep |
대기 | Sleep 1000 |
MouseGetPos |
좌표 얻기 | MouseGetPos(&x, &y) |
CoordMode |
좌표 기준 | CoordMode "Mouse", "Window" |
이전 글: [#4 핫스트링(Hotstring)]
다음 글: [#6 프로그램 실행과 창 관리]
반응형
'🔬 과학·테크 > 🔥 AutoHotkey v2 입문 가이드' 카테고리의 다른 글
| AutoHotkey v2 입문 가이드 #7: 변수와 데이터 타입 - 데이터 다루기의 기초 (0) | 2025.12.10 |
|---|---|
| AutoHotkey v2 입문 가이드 #6: 프로그램 실행과 창 관리 - Run, WinActivate, WinWait (0) | 2025.12.09 |
| AutoHotkey v2 입문 가이드 #4: 핫스트링(Hotstring) - 타이핑의 마법 (1) | 2025.12.07 |
| AutoHotkey v2 입문 가이드 #3: 핫키(Hotkey) 기초 - 나만의 단축키 만들기 (0) | 2025.12.06 |
| AutoHotkey v2 입문 가이드 #2: 첫 스크립트 작성하기 - Hello World를 넘어서 (1) | 2025.12.05 |