⚠ 이 강좌는 오토핫키 v2를 다룹니다
지금 보시는 강좌는 과거 오랜 시간동안 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
만약 구버전인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시면 되지만,
새로 오토핫키를 배우신다면 v2 버전을 배우시는 것을 강력히 추천드립니다.
36. MouseMove & Click
마지막 수정일: 2023-12-22
드디어 마우스 커서를 움직이고, 클릭해보겠습니다.
MouseMove
마우스 커서를 움직이려면 MouseMove
함수를 사용합니다. 이 함수는 원하는 좌표로 마우스 커서를 이동시켜주는 동작을 합니다.
MouseMove(X, Y [, Speed, Relative])
각각의 매개변수는 아래와 같은 역할을 합니다.
- X: 커서가 움직일 x 좌표
- Y: 커서가 움직일 y 좌표
- Speed: 커서가 지정한 좌표까지 이동하는 속도(생략시 2)
- Relative: 문자열
R
이 전달되면 커서가 좌표 유형을 무시하고, 현재 마우스의 위치를 기준으로 이동함
1. X, Y
마우스가 이동할 X, Y 좌표입니다. 각 매개변수의 자리에 맞게 숫자로 적어주시면 됩니다.
좌표는 앞선 강에서 말씀드린 Window spy 프로그램을 이용하여 구할 수 있습니다. 움직이고자 하는 곳에 마우스 커서를 위치시킨 후, 그 값을 읽으면 되죠.
2. Speed
마우스 커서가 이동할 속도입니다. 선택 매개변수이기 때문에 생략이 가능하며, 기본 값은 2입니다. 숫자가 낮을수록 속도가 빠릅니다. 0은 즉시 이동하며, 100은 가장 느리게 이동합니다.
그러나 이 매개변수는 SendMode(후술)가 Event 모드일 때만 유효하며, 이외의 경우는 기본값이 2임에도 불구하고 지연 시간 없이 즉시 이동됩니다.
3. Relative
이 매개변수에는 R
이라는 문자열만 집어넣을 수 있습니다.
만약 R
이 전달되면, 현재 마우스 좌표에서 (x, y)만큼 더한 곳으로 마우스 커서를 이동시킵니다.
즉, 좌표의 원점(0, 0)이 현재 마우스 커서의 위치에 따라 달라지는 셈입니다.
당연히 CoordMode
로 좌표 유형을 지정했어도 전혀 영향을 받지 않습니다.
Tip: Speed 매개변수의 사용
커서가 이동하는 움직임을 보려면 Speed가 1보다 커야합니다(0은 즉시 이동). 그리고 Speed 매개변수의 기본 값은 2이죠. 그러나 매개변수를 생략해도, 아래와 같이 Speed 매개변수를 부여해도 커서는 목표 좌표로 즉시 이동할 뿐, 그 움직임이 보이지 않습니다.
1 MouseMove(100, 100, 10)
그 이유는 SendMode에 있습니다. 오토핫키에서 키보드나 마우스의 동작 방식은 크게 Event, Input, Play가 있는데, 오토핫키는 기본 입력 동작 방식으로 Input 모드를 사용합니다. 그러나 마우스의 궤적을 보여주는 것은 Event 모드 뿐입니다.
따라서, 아래와 같이 SendMode
함수를 이용하여 입력 동작 방식을 Event로 바꿔준 후, 마우스 동작을 하면 그 속도가 조절됩니다.
1 SendMode("Event")
MouseClick
MouseMove
함수를 익히셨다면, 마우스를 클릭하는 MouseClick
함수는 간단히 사용할 수 있습니다.
MouseClick([WhichButton, X, Y, ClickCount, Speed, DownOrUp, Relative])
모두 선택 매개변수네요. 각 매개변수의 역할은 아래와 같습니다.
- WhichButton: 클릭할 마우스 버튼 (생략시 왼쪽 버튼)
- X: 클릭할 x 좌표 (생략시 현재 x좌표)
- Y: 클릭할 y 좌표 (생략시 현재 y좌표)
- ClickCount: 클릭할 횟수 (생략시 1회)
- Speed: 마우스 커서가 움직일 속도 (생략시 2)
- DownOrUp: 마우스 커서를 누르고 있거나, 떼고 있게 할 수 있음 (생략시 눌렀다 뗌)
- Relative: 문자열
R
이 전달되면 커서가 좌표 유형을 무시하고, 현재 마우스의 위치를 기준으로 이동함
매개변수만 보고 눈치 채셨나요? MouseClick
함수는 단순히 제자리를 클릭하는 것이 아닌, 원하는 위치로 커서를 이동시켜 클릭시켜줍니다.
그리고 몇몇 매개변수는 MouseMove
함수와 사용 방식/목적이 동일한 것을 알 수 있습니다.
1. WhichButton
클릭할 버튼을 문자열로 적어줍니다.
마우스는 왼쪽/오른쪽 버튼과 휠버튼(가운데 버튼)이 있죠?
각각 Left
Right
Middle
로 적어줍니다. 문자열이니까 따옴표 처리를 해야한다는 점 잊지 마시고요.
고급 마우스 옆에 달린 추가 버튼은 각각 X1
X2
로 적어줍니다.
또한, Left
Right
Middle
은 각각 그 머릿글자(L
R
M
)로 축약해서 쓸 수 있습니다.
2. X, Y
MouseMove
의 경우와 동일합니다.
마우스가 클릭할 좌표를 숫자로 적어줍니다.
3. ClickCount
클릭할 횟수를 숫자로 적어줍니다. 이 매개변수부터는 보통 생략합니다.
4. Speed
MouseMove
의 경우와 동일합니다.
입력 동작 방식을 Event로 바꿔주어야 마우스의 움직이는 속도를 조절할 수 있는 것도 MouseMove
와 같습니다.
(상단의 Tip 참고)
5. DownOrUp
문자열 D
와 U
만 적을 수 있으며, 마우스를 꾹 누르는 동작을 구현하거나 반대로 마우스 버튼을 떼는 동작을 구현할 때 사용합니다.
D
를 적으면 누르고 있고, U
를 적으면 뗍니다.
6. Relative
MouseMove
의 경우와 동일합니다.
Tip: Click과 MouseClick
MouseClick
함수와 별개로 Click
함수가 있는데, 공식 문서에서는 보다 유연한 동작을 하므로 Click
사용을 권장하고 있습니다.
그러나 Click
은 매개변수가 하나(Options)인 함수이고, 그 매개변수에 전달할 값이 고정되어있지 않기 때문에 가르치기에 모호한 편이 있다고 생각합니다.
따라서 개인적인 판단으로 Click
대신 MouseClick
을 강좌합니다.
저도 MouseClick
을 자주 이용합니다.
실습
1. MouseMove로 마우스 이동시키기
먼저 MouseMove
부터 실습해봅시다.
아래와 같은 코드는 (100, 100)부터 (200, 200)까지 있는 가상의 사각형의 네 꼭짓점 위치로 마우스 커서를 순서대로 이동시킬 것입니다.
속으로 화면 속에 좌표를 그려보신 후 스크립트를 실행해보세요. 생각한대로 동작하나요?
1 Loop 3
2 {
3 MouseMove(100, 100)
4 Sleep(300)
5 MouseMove(100, 200)
6 Sleep(300)
7 MouseMove(200, 200)
8 Sleep(300)
9 MouseMove(200, 100)
10 Sleep(300)
11 }
(100, 100), (100, 200), (200, 200), (200, 100)을 속으로 이어보시면 정사각형의 각 꼭짓점임을 알 수 있습니다. 이 예제를 통해 화면 상의 좌표에 대한 감을 익히실 수 있습니다.
2. 좌표 유형 변경 후 클릭하기
CoordMode
를 통해 마우스 좌표 유형을 절대 좌표로 지정해준 후, 원하는 지점을 클릭하도록 스크립트를 작성해보겠습니다.
1 F1::
2 {
3 CoordMode("Mouse", "Screen")
4 MouseClick("Left", 300, 300)
5 }
이렇게 보통 MouseClick
은 (x, y) 좌표까지만 지정해줍니다.
위의 예제는 절대 좌표(스크린 좌표)로 (300, 300) 부분을 클릭하겠죠.
이제 나머지는 응용의 영역입니다. 예제에 나오지 않은 매개변수를 이용해서 여러 동작을 구현해보세요. 그리고 연속적인 클릭으로 특정 작업을 자동화해보세요. 예를 들어서, F1을 누르면 시작 버튼을 누른 후 시스템을 종료하는 버튼을 누르게 해보거나, 바탕화면에 있는 아이콘을 더블클릭하게 만들며 연습해봅시다.