반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

LearningNote

[오토핫키] 마우스 제어(3) 본문

오토핫키

[오토핫키] 마우스 제어(3)

LN 2020. 6. 23. 21:58
반응형

[오토핫키] 마우스 제어(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 핫키를 눌러보세요.

그러면 클릭이 됐는지 더블클릭이 됐는지 이동만 됐는지 쉽게 판별이 가능합니다.

 

다양한 형태의 Click 명령어

잘 되시나요?

네, 잘하셨습니다.

 

이번에는, 마우스 포인터의 위치 정보를 얻는 또 다른 방법을 하나 알려드릴까 합니다.

지난번에는 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
Comments