본문 바로가기

반응형

안녕하세요. 아마 2강까지 진행하셨다면 의아한 것을 발견하셨을지도 모릅니다.

그것은 1강에서 마우스 클릭에 대해서 배웠다면 2강에서는 마우스 무브에 대해서 배웠다는 것인데

그렇다면 마우스에 관련된 다른 코드도 있지 않을까? 하는 의심말입니다.

 

결론을 말씀드리자면 일단 있습니다.

저흰 마우스를 가지고 클릭과 이동만 하는것이 아니기 때문이죠.

드래그를 한다거나 정보만을 가져오는 등 여러가지 코드도 존재합니다.

 

그럼 천천히 원래 배운 것부터 다시 알아가보도록 하겠습니다.

 

1. MouseClick

ex : MouseClick [, WhichButton, X, Y, ClickCount, Speed, DownOrUp, Relative

제일 처음에 배웠던 것으로 정확히 자주 사용하는 것만 빠르게 배우고 넘어갔던 것으로 기억하고 있습니다.

하지만 1강에서 배웠던 것만으로도 많은 것을 할 수 있을지 모르지만 더욱 많은 지식을 탐하는 분에게는

다른 방법으로도 사용할 수 있다는 것을 알려드리는 것이 좋겠죠.

 

일단 저희가 배웠던 것을 다시 떠올려봅시다.

MouseClick, left

제일 기본적인 것으로 그저 왼쪽 클릭 한번 하는 것에 불과합니다.

 

MouseClick, left, 300, 200

하지만 뒤에 좌표를 붙여줌으로서 클릭 밖에 못했던 이 것이 이동을 하여 클릭하는 것으로 변경됩니다.

그리고 그 다음에 몇 번을 클릭할 것인지, 속도와 지속적인 버튼 다운에 대해서 설정할 수 있습니다.

 

그렇다면 이 코드는 왼클릭과 우클릭밖에 못하는 코드였을까요?

그것은 아닙니다.

 

마우스에는 좌클릭과 우클릭 이외에도 가운데 휠 버튼이 존재합니다.

그렇다면 이 휠 버튼을 움직여볼까요?

 

MouseClick, WheelUp, , ,2

이것은 무엇을 하는 코드일까요?

전의 내용을 기억하고 계신다면 보자마자 느낌이 오실지 모르겠지만

그저 휠 업을 2칸 올린다는 소리입니다.

 

그렇다면 아래로 내리려면 어떻게 해야할까요?

MouseClick, WheelDown, , ,2

저 혼자 북치고 장구치고 있지만 당연히 이렇게 하면 됩니다.

하지만 마우스 클릭을 반복하기 위해 빈 공간을 '반점'으로 넘어가는 것에 불편함을 느끼실 수 있습니다.

그걸 위한 해결책도 존재합니다.

 

바로 무한적으로 반복하던 'Loop'를 사용하는 것입니다.

아니 'Loop'는 횟수 제한 없이 반복하는 것이 아닌가? 하는 생각이 드실지 모르겠지만

사실 이것은 저희가 제한을 주지 않아서 그렇지 반복 횟수를 설정해 줄 수 있는 것이었습니다.

 

그렇다면 이것을 어떻게 사용하면 저 뒤에 불편하고 짜증이 날거같은 빈 공간 때우는 반점을 없앨 수 있을까요?

loop, 2
	MouseClick, WheelUp

정말로 이것만으로 끝납니다.

아무 부담 없이 깔끔하게 끝나죠.

 

하지만 다른 언어를 배워보신 분이라면 여기서 다른 것을 떠올렸을수도 있습니다.

그것은 왜 For문을 사용하지 않는가? 에 대한 것이죠.

하지만 그 것은 여기서 다룰 것이 아니라고 생각합니다.

 

다음에 반복문을 배울 때 만나보도록 하죠.

'Relative' 의 사용법은 아래에서 설명드리겠습니다.

 

2. MouseMove

ex : MouseMove, X, Y [, Speed, Relative]

2강에서 배우셨던 마우스 이동입니다.

사실 클릭을 배우셨다면 필요가 없을지도 모르겠지만 3D게임에서 화면의 시점을 바꿀 때 사용할 수 있죠.

혹은 어느 게임에서 이미지 서치를 사용하여 메모리 핵을 사용할 때도 사용하실 수 있을지 모르구요.

일단 저같은 경우에는 에임핵으로는 사용해본적이 없었습니다.

어느 싸움넷에서 나온 FPS에서 당당하게 실버를 받았기에 생각도 나지 않았죠.

 

일단 잡담은 그만두고 이 곳에서는 클릭과 다르게 매우 적은 개수의 변수가 들어갈 수 있습니다.

MouseMove, 300, 200

제일 기본적으로 (300, 200)의 좌표로 이동하는 것부터 해서

 

MouseMove, 300, 200, 50

속도도 정해줄 수 있죠.

 

하지만 의문이 하나 드실겁니다.

마우스 클릭에서부터 있던 'Relative'는 대체 무엇일까? 하고요.

하지만 의외로 간단합니다.

 

MouseMove, 300, 200, 50, R

이런 식으로 'R' 을 적어주면 현재 마우스의 위치에서 오프셋으로 처리되어 이동하게 됩니다.

라고 설명하면 많이 어려울테니 간단하게 설명해드리겠습니다.

 

예를 들어서 저 'R'이 없다면 윈도우 화면 중에서 고정 좌표 300, 200으로 이동하게 될것입니다.

하지만 저 'R'이 생기게 되면서 현재 마우스의 위치를 파악해서 (nx, ny)로 기록하여

(nx+300, ny+200)의 좌표로 이동하게 되는 것입니다.

 

즉 현재 마우스 위치에서 300, 200을 더한 값만큼 이동합니다.

사실 이것이 설명만으로 힘드니 직접 코딩을 한번 해본 뒤 실행해보는 것도 나쁘지 않습니다.

 

하지만 완벽한 파악이 끝나기 전까지 'loop' 같이 무한정으로 반복하는 코드 안에 넣진 말아주세요.

 

3. MouseClickDrag

ex : MouseClickDrag, WhichButton, X1, Y1, X2, Y2 [, Speed, Relative]

아, 드디어 나왔습니다. 처음보는 것이죠?

제 강좌에는 여태 나온적이 없으며 앞으로도 못 볼 내용입니다.

왜냐하면 제가 사용하지 않기 때문이죠.

 

이것은 말 그대로 드래그를 해주는 것입니다.

하지만 드래그가 어디에 쓸모있겠습니까? 그쵸.

 

하지만 의외로 쓸모가 있었습니다.

드래그를 계속 한다는 것은 이 코드가 실행되는 동안에는 클릭이 눌러지고 있는 상태이며

그렇다는 것은 FPS에서 총의 반동만 안다면 헤드라인을 긁는 프로그램도 만들 수 있다는 것이죠.

 

이것을 이미지 서치를 한다면 특정 이미지가 보였을 때

헤드라인을 긁어버리는 극악무도한 프로그램도 만들 수 있을겁니다.

 

라는 것은 사실 너무 과몰입이구 3D게임부터는 이미지 서치만으로는 할 수 없습니다.

요즘 광원같은 것이 들어가서 색의 변화때문에 이미지 서치로 감지를 할 수 없기 때문이죠

 

그래도 일단 먼저 사용법을 알아보도록하겠습니다.

MouseClickDrag, Left, 100, 100, 800, 800

먼저 이렇게 보신다면 감이 안 잡힐수도 있습니다.

하지만 설명을 들으신다면 금방 이해하실수도 있습니다.

 

먼저 처음보는 것이 있다면 위에선 (X, Y)로 끝났던 것이 (X1, Y1), (X2, Y2)로 짜증나게 증식했다는 것이죠.

'X'랑 'Y'가 커플마냥 붙어다니는 것도 짜증나는데 그것이 둘로 증식했습니다.

 

이것이 2개가 된 것에는 이유가 있습니다.

드래그를 한다면 일단 시작하는 좌표에서 클릭을 시작한 뒤 끝나는 좌표까지 이동해야하기 때문이죠.

그렇기 때문에 (X, Y)좌표를 2개 구해서 1번 좌표에서 2번 좌표까지 드래그를 하는겁니다.

 

시작 좌표 하나만 만들어두고 끝나는 좌표를 안 만들어 둔다면 그건 그냥 클릭이지 드래그가 아니잖습니까

 

그렇다면 현재 마우스 위치에서 원하는 값만큼 이동하려면 어떻게 해야할까요?

 

MouseClickDrag, Left, , , 300, 300, 50, R

그냥 여태 배운거 다 써먹으면 됩니다.

값이 안 들어 갈 곳에는 공백으로 '반점'을 찍어주시고 좌표를 찍은 뒤

마우스 속도는 알아서 설정하시고 'R'만 박아주시면 자신의 현재 마우스 위치에서 이동하겠죠?

사실 해보진 않았지만 이론상으론 그러니 될거라고 믿습니다.

 

4. MouseGetPos

ex : MouseGetPos, [OutputVarX, OutputVarY, OutputVarWin, OutputVarControl, Flag]

와, 이번에도 처음 보는 코드입니다. 이 코드를 적는데 Output이 얼마나 많은지 손가락이 꼬였었습니다.

이건 저도 처음 봤습니다. 쓸 필요를 느낀적이 없어서 따로 찾아본 적도 없었거든요.

하지만 이런것도 있다는 것을 안다는 것 자체가 매우 중요한 것입니다.

그래서 잠시 다른 곳에서도 정보를 찾아봤습니다.

영어로 된 것을 번역기 돌려도 모르는건 모르겠더군요.

 

일단 빗대어 설명하자면 'G매크로'에서 마우스 좌표정할때 옆에다가 좌표 보여주는 기능과 흡사한것 같습니다.

MouseGetPos, 변수A, 변수B
Msgbox, X : %변수A% Y : %변수B%

이러한 코드를 짯을 때 자신의 마우스 좌표가 메세지 박스에 뜨는 것을 볼 수 있습니다.

사실 이해가 파박! 하고 오려면 직접 한번 쳐보는 것이죠.

 

'변수A'와 '변수B'는 예시로 든 것이라 그냥 다른 값으로 바꿔서 적어도 좋습니다.

대략 이것으로 마우스 관련 코드에 대해서 알아보았습니다.

저도 새로운 것을 알게되어 정말 유익한 시간이었다고 생각합니다.

겉으론 말이죠

댓글