LearningNote
[오토핫키] 마우스 제어(3) 본문
[오토핫키] 마우스 제어(3)
마우스 클릭, 더블클릭, 이동, 드래그까지 배웠습니다.
아니 근데 더블 클릭은 언제 배웠냐고요?
MouseClick 명령어에 ClickCount 인자를 2로 하면 더블클릭입니다.
MouseClick, Left, 100, 100, 1
마우스 클릭은 보통 왼쪽 버튼을 많이 쓰죠.
그래서 간소화된 명령어가 있습니다.
Click 이라는 명령어입니다.
좌클릭을 할 때 쓰이며,
ClickCount 를 0 으로 하면,
클릭하지 않고 이동만 하는 용도로도 쓸 수 있습니다.
다음의 코드를 통해 이해해보시기 바랍니다.
!4::
Click ; MouseClick, Left, , , 1 과 동일
Sleep, 2000
Click, , , 2 ; MouseClick, Left, , , 2 와 동일
Sleep, 2000
Click, 100, 100, 1 ; MouseClick, Left, 100, 100, 1 과 동일
Sleep, 2000
Click, 100, 200, 2 ; MouseClick, Left, 100, 100, 2 와 동일
Sleep, 2000
Click, 200, 100, 0 ; MouseMove, 100, 100 과 동일
return
인자가 비어 있는 경우에는 그 자리를 그냥 비워 두고 콤마로 다음 인자 값을 넣으시면 됩니다.
예를 들어 현재 마우스 포인터가 있는 위치에 더블클릭을 하려고 하면,
x 좌표와 y 좌표를 비워두고 ClickCount 만 입력하면 되기 때문에
다음과 같이 입력하는 것입니다.
Click, , , 2
코드 실행 전에, 먼저, 새 메모장을 열어 아무 글자나 상관없으니 창을 가득 채워보시기 바랍니다.
그리고 그 상태에서 오토핫키를 실행하고 Alt + 4 핫키를 눌러보세요.
그러면 클릭이 됐는지 더블클릭이 됐는지 이동만 됐는지 쉽게 판별이 가능합니다.
잘 되시나요?
네, 잘하셨습니다.
이번에는, 마우스 포인터의 위치 정보를 얻는 또 다른 방법을 하나 알려드릴까 합니다.
지난번에는 Active Window Info 툴을 이용해 포인터 위치를 알아내는 방법을 알려드렸습니다.
툴을 쓰지 않고 명령어를 통해 좌표값을 얻는 방법도 있으니 따라 해 보세요.
MouseGetPos 라는 명령어입니다.
MouseGetPos [, OutputVarX, OutputVarY, OutputVarWin, OutputVarControl, 1|2|3]
간단 도움말을 살펴보면, MouseGetPos 명령어만 쓰더라도 작동이 되는 것을 알 수 있습니다.
대괄호 안에 있는 것들은 선택적인 인자이기 때문입니다.
하지만 거의 필수적이라고 할 수 있는 인자가 두 개 있습니다.
바로, OutputVarX 와 OutputVarY 입니다.
그 이유는 좌표값을 가져왔으면 어딘가에 담아두어야 하기 때문입니다.
그러지 않고서는 이 명령어를 사용하는 의미가 없겠죠.
OutputVarX 에서 Var 는 Variable 의 약자로, 우리말로는 변수라고 합니다.
일단 한번 따라서 실습해보고 마저 설명을 드리겠습니다.
아직 배우지 않은 내용이 있지만, 일단 실행해보고 유추해보세요.
!5::
MouseGetPos, vx, vy
MsgBox, %vx%, %vy%
return
마우스 포인터를 이리저리 움직여가며 Alt + 5 키를 눌러보셨나요?
현재의 마우스 포인터 좌표값을 vx 와 vy 에 담은 다음
그 좌표값을 메시지 박스에 출력하는 코드였습니다.
Alt + 5 핫키를 누르는 순간,
vx 변수와 vy 변수에 x 좌표값과 y 좌표값이 담길 것입니다.
vx 와 vy 대신 다른 문자를 넣으셔도 됩니다.
단, 변수는 숫자 또는 특수기호로 시작할 수 없습니다.
보통은 영문 또는 한글로 변수명을 지정합니다.
각 변수에 값이 저장을 것이며,
메시지 박스 명령어에서 그 변수값을 읽어다가 출력해주도록 되어 있습니다.
vx 와 vy 양쪽에 '%' 기호가 붙어 있습니다.
이것은 변수의 값을 불러오기 위한 문법입니다.
이렇게도 바꿀 수 있습니다.
아래 세 가지는 모두 동일한 결과를 출력합니다.
MsgBox, %vx%, %vy%
MsgBox, % vx ", " vy
MsgBox, % vx . ", " . vy
명령어 다음에 한 칸 띄고 '%', 또 한칸 띄고 로 시작하는 문법입니다.
명령어와 첫 번째 인자 사이에 '%' 기호를 입력하면,
그 뒤쪽을 표현식(Expression) 형태로 사용한다는 의미가 됩니다.
표현식은 vx 라는 문자를 그대로 출력하는 것이 아니라
그 문자가 가진 값을 연산한 후에 출력합니다.
표현식에서 문자를 출력하려면 큰따옴표(") 로 감싸야합니다.
따라서 x 좌표와 y 좌표 사이에 콤마(,) 를 출력하려면 ", " 를 입력하면 됩니다.
마지막 명령어 줄에서는 마침표(.) 가 등장합니다.
이것은 큰 의미는 없으며, 표현식에서 값을 이어준다(?) 는 의미를 명시적으로 나타냅니다.
표현식은 앞으로도 계속해서 등장할 테니 차츰 익숙해지기로 합시다.
'%' 를 변수 양쪽에 두면, 각 변수만 부분적으로 연산하고,
명령어와 첫 번째 인자 사이에 '%' 와 공백을 두면,
전체를 표현식으로 바꾼다는 것이 핵심입니다.
다소 어려운 내용이었습니다.
많이 접하고 익숙해지면 되는 것이니 너무 상심하지 않으셨으면 합니다.
끝으로, 마우스 제어에 관한 전체 실습 코드를 보시며
복습해보세요.
#SingleInstance, Force
F4::
ExitApp
!1::
MouseClick, Left, 300, 300, 1
Sleep, 2000
MouseClick, Right, 400, 300, 1
Sleep, 2000
MouseClick, Left, 400, 200, 2
Sleep, 2000
MouseClick, Left, 300, 200, 1, 0
Sleep, 2000
MouseClick, Left, 300, 300, 1, 100
return
!2::
MouseMove, 624, 219
MouseMove, 488, 663
MouseMove, 848, 385
MouseMove, 399, 382
MouseMove, 767, 661
MouseMove, 624, 219
return
!3::
MouseClickDrag, Left, 624, 219, 488, 663
MouseClickDrag, Left, 488, 663, 848, 385
MouseClickDrag, Left, 848, 385, 399, 382
MouseClickDrag, Left, 399, 382, 767, 661
MouseClickDrag, Left, 767, 661, 624, 219
return
!4::
Click ; MouseClick, Left, , , 1 과 동일
Sleep, 2000
Click, , , 2 ; MouseClick, Left, , , 2 와 동일
Sleep, 2000
Click, 100, 100, 1 ; MouseClick, Left, 100, 100, 1 과 동일
Sleep, 2000
Click, 100, 200, 2 ; MouseClick, Left, 100, 100, 2 와 동일
Sleep, 2000
Click, 200, 100, 0 ; MouseMove, 100, 100 과 동일
return
!5::
MouseGetPos, vx, vy
MsgBox, %vx%, %vy%
MsgBox, % vx ", " vy
MsgBox, % vx . ", " . vy
return
'오토핫키' 카테고리의 다른 글
[오토핫키] 좌표계(2) (0) | 2020.06.25 |
---|---|
[오토핫키] 좌표계(1) (0) | 2020.06.24 |
[오토핫키] 마우스 제어(2) (0) | 2020.06.22 |
[오토핫키] 마우스 제어(1) (0) | 2020.06.22 |
[오토핫키] 키보드 제어(3) (0) | 2020.06.19 |