마우스 클릭을 하기 전에 항상 선언해 주면 좋은 함수가 있다.
https://www.autohotkey.com/docs/v2/lib/CoordMode.htm
CoordMode 이다.
Coord는 당연히 Coordinate(좌표)의 약자 일 것이고, 좌표의 모드를 어떤걸 쓸거냐 하는것.
CoordMode TargetType [, RelativeTo]
매개변수가 TargetType과 RelativeTo 2개가 있는데 TargetType은 당연히 Mouse 다. 다른것은 지금 궁금해 하지 말자.
나머지 하나는 Default값이 정해져 있는 선택적 매개변수인데 Default값은 Screen이라고 나와 있다.(함수 사용시 인수를 따로 넣지 않으면 Screen이라는 말)
AutoHotkey v2를 켜서 Window spy for AHKv2 를 실행해 보았습니다.
Client가 default 로 표시된것을 확인할 수 있다.
Coordmode를 사용하지 않은 상태에서, 창모드로, 크기는 전체 화면의 절반정도로 하고 아무 프로그램이나 띄워 놓고 실험해 보았다.
코드는 이렇게 작성했다.
F1::
{
MouseClick , 878, 132
Sleep 500
MouseClick , 100, 100
Sleep 500
MouseClick , 200, 200
Sleep 500
MouseClick , 300, 300
}
첫 시작은 바탕화면의 빈공간을 클릭한채로 F1을 눌러서 매크로를 동작시켰다.
처음 동작은 Screen으로 시작해서 Screen : 878, 132 좌표가 찍히지만 MouseClick으로 메모장 Client가 선택된 시점 부터 Client 기준으로 (100, 100)(200,200)(300,300)의 좌표가 찍히는걸 볼 수 있다. 이렇게 원치 않는 결과가 나올 수 있는것.
CoordMode를 적용하여 코드를 수정했다. Default가 Screen 이라 Mouse만 넣었다. Mouse는 String 자료형이기에 "로 감싸야 한다.
F1::
{
CoordMode "Mouse"
MouseClick , 1207, 133
Sleep 500
MouseClick , 1207, 233
Sleep 500
MouseClick , 1207, 333
Sleep 500
MouseClick , 1207, 433
}
이제는 아무리 Client를 클릭하고 있어도 좌표 기준이 Screen으로 고정된것을 확인할 수 있다.
이렇듯 MouseClick을 쓰기 전에는 창을 선택하는것으로 인해 좌표의 기준이 변경되는것을 차단해주기 때문에 예기치 않은 동작을 막을 수 있는 CoordMode 의 사용이 우선 되어야 한다.
CoordMode "Mouse", "Screen"
CoordMode "Mouse", "Window"
CoordMode "Mouse", "Client"
매개변수 2개를 모두 사용한다면 이런식으로 쓸 수 있겠다.
CoordMode로 좌표 모드를 지정 했다면 다음은 마우스를 움직이는것.
MouseMove는 너무 쉽다.
MouseMove X, Y [, Speed, Relative]
필수 매개변수인 X, Y좌표만 넣는 형태로 주로 많이 사용한다.
F1::
{
CoordMode "Mouse", "Screen"
MouseMove 100, 100
Sleep 500
MouseMove 200, 200
Sleep 500
MouseMove 300, 300
Sleep 500
MouseMove 400, 400
}
당장 이 코드를 실행시켜서 F1을 한번 눌러보면 한번에 이해가 된다.
선택적 매개변수는 Speed와 Relative 인데 Speed는 모르는 사람이 없을 것이고(커서 이동속도)
Relative는 상대좌표로 처리할 것인지 절대좌표로 처리할 것인지를 묻는것이다.
위 코드와 아래 코드는 동일한 것이다. 상대좌표와 절대좌표를 사용했을 뿐
주의 할 점은 R 도 String 자료형이기 때문에 "로 감싸줘야 한다. 모든 String 자료형은 "로 감싸줘야 한다는 것을 기억하자.
F1::
{
CoordMode "Mouse", "Screen"
MouseMove 100, 100
Sleep 500
MouseMove 100, 100, , "R"
Sleep 500
MouseMove 100, 100, , "R"
Sleep 500
MouseMove 100, 100, , "R"
}
MouseClick은 MouseMove와 아주 유사하다.
MouseClick - Syntax & Usage | AutoHotkey v2
MouseClick [WhichButton, X, Y, ClickCount, Speed, DownOrUp, Relative]
모든것이 선택적 매개변수로 이루어져 있는데 생각 해보면 간단하다.
MouseClick만 하나 달랑 쓰면 지금 커서가 위치한 그자리에서 클릭을 할 것이다.
첫번째 매개변수 WhichButton 은 String 자료형이며 아래 다섯가지 형태가 있다.
아래는 왼쪽부터 순서대로 좌클, 우클, 휠클(스크롤 클릭), X1, X2는 뒤로가기 버튼이 있는 마우스들의 4번, 5번 버튼이다.
"Left" "Right" "Middle" "X1" "X2"
X,Y 는 MouseMove 에서 사용과 정확하게 동일하다. 좌표를 가리킨다.
ClickCount는 언어 그대로 클릭하는 횟수, Speed는 커서 속도, DownOrUp 은 역시 String
"D" "U"
마우스를 누르는 동작만 필요하거나 떼는 동작만 필요로 할 때 사용한다.
Relative는 MouseMove에서 설명했던것과 같다.
"R"
상대좌표냐 절대좌표냐, 쓰면 상대좌표고 생략하면 절대 좌표다.
매개변수를 생략하고자 할 때는 , (comma)만 표시 해주면 된다.
MouseClick , 500, 800
실무에서 가장 자주 쓰이는 형태의 문장이다. 500,800 좌표를 좌클릭 한다.
여기서 X나 Y 좌표에 변수를 사용하고자 할 때는 변수를 소괄호로 처리 해주면 된다.
F1::
{
value := 500
MouseClick , (value), 800
}
이렇게 작성하면 500,800 좌표 클릭이 된다.
(AutoHotKeyV2)
오토핫키V2의MouseMove와 MouseClick에 대해 간단하게 알아 보았다.
'오토핫키v2' 카테고리의 다른 글
오토핫키 v2 ScanCode 확인 하기 (0) | 2023.06.02 |
---|---|
내가 쓰려고 만든 오토핫키v2(AutoHotKey v2) 업무에 꼼수를 활용해보자 (0) | 2023.04.05 |