15 - [오토핫키] MouseMove / MouseGetPos

    이제 내가 원하는 어디든 마우스 작업을 지정 할 수 있게 됐습니다. 고작 이정도 작업을 할거면 그냥 인터넷에서 오토마우스 검색해서 아무 매크로나 다운 받는것이 훨씬 빠르겠죠. 하지만 우리는 스크립트를 직접 짤 수 있기 때문에 조금더 고급스러운 모습을 보여줄 필요가 있어요.

    예를들어 업무하는 도중 A라는 지점을 클릭하고, B라는 지점을 클릭하는 스트립트를 만들었다고 칩시다. 스크립트를 실행한 후에 최종 마우스의 위치는 어디에 있을까요? 당연히 B지점에 위치하겠죠. 우리는 업무를 하던중이니 다시 업무하던 원래의 위치로 마우스를 가져와야 하는 불편함이 있습니다.

    자! 이번엔 현재위치를 P라 하고 A를 클릭, B를 클릭, 다시 P로 마우스가 돌아오게 만들어 봅시다. 어! 그런데 마우스의 현재위치 P는 내가 움직일때마다 변하지 않나요? 라고 생각할 수 있겠죠? 그럼 아래 내용을 배워봅시다!!

     

     

     

    문법

    MouseMove, X, Y [, Speed, R]

     

    설명

    X, Y

    마우스를 이동할 좌표입니다.

    Speed

    마우스가 이동할 속도를 0~100까지 지정합니다. 0이면 마우스는 순간이동 합니다.

    (SetDefaultMouseSpeed 명령어로 지정 할수도 있는데 속도관련 명령어는 모아서 한번에 포스팅 할게요.)

    R

    현재 마우스의 위치로부터 상대거리로 움직입니다.

     

     

    문법

    MouseGetPos, [OutputVarX, OutputVarY, OutputVarWin, OutputVarControl, 1|2|3]

     

    설명

    OutputVarX/Y

    X와 Y좌표를 저장할 변수입니다.

    OutputVarWin

    마우스가 가르키는 창의 유일한 ID 번호를 저장할 변수입니다.

    OutputVarControl

    마우스가 가르키는 위치에 있는 콘트롤 이름(ClassNN)을 저장할 변수입니다.

    1|2|3

    1: OutVarControl을 열람하는데 좀더 간단한 방법을 사용합니다.

    2: 콘트롤의 ClassNN이 아니라 HWND을 저장합니다.

    3: 위의 1과 2를 함께 사용합니다.

     

     

    예제

    예제1)

    F1::

    MouseGetPos, vX, vY  ;현재위치 P

    MouseClick, L, 40, 70, , 0  ;A지점

    MouseClick, L, 130, 20, , 0  ;B지점

    MouseMove, vX, vY, 0

    Return

    예제2)

    F1::

    CoordMode, Mouse, Screen

    MouseGetPos, vX_1, vY_1

    CoordMode, Mouse, Window

    MouseGetPos, vX_2, vY_2

    CoordMode, Mouse, Client

    MouseGetPos, vX_3, vY_3

    MsgBox,

    (

    Absolute: %vX_1%, %vY_1%

    Relative: %vX_2%, %vY_2%

    Client: %vX_3%, %vY_3%

    )

    Return

     

    MouseMove의 경우 MouseClick과 유사하고 오히려 더 간단하니 설명은 생략하겠습니다.

    MouseGetPos는 마우스의 좌표, 창의 ID, 콘트롤 정보를 변수로 저장하는 기능을 갖고 있는데 ID나 콘트롤 같은경우는 안배웠으니 생략하고 좌표만 보도록 합시다.

    변수 선언을 할때 A=30 이런식으로 변수를 입력 해줬지만 문법의 OutputVar은 이 값에 변수를 담아서 당신에게 돌려주겠다는 뜻으로 예제에서는 vX변수에 현재 마우스의 X좌표값이, vY에는 현재 마우스의 Y좌표값이 담겨진다는걸 알 수 있죠.

    우선 예제1은 처음에 설명드렸듯이 현재위치 P를 MouseGetPos명령어로 변수 vX, vY에 담아둡니다. MouseClick으로 A지점과 B지점을 클릭한 후 MouseMove로 변수로 지정했던 vX, vY 즉 P지점으로 이동하므로써 모든 행동을 마치고 원래의 위치로 마우스가 돌아오는 스크립트입니다. 어떤가요!? 이제 좀 고급스럽게 보이나요??

    많은 양의 스크립트를 작성할때 매번 "스파이"를 열고 좌표 찾기가 번거롭겠죠? 예제2는 좌표의 위치를 메시지 박스로 띄워주는 스크립트에요. 앞서 배운 내용으로만 구성되어있어 설명은 필요없겠죠?

    그러나! MsgBox의 내용이 이상하지 않나요?? 분명히 스크립트는 한줄씩 읽어나가고 줄바꿈이 있을때 다른 명령어로 인식을 해야하는데 말이죠. 상황에 따라 긴문서 등을 다룰 경우도 생기기 때문에 `n로 엔터를 표시하며 옆으로 길게 쓰기엔 무리가 있으므로 ( )로 묶어서 하나의 명령어로 병합하는 방법도 있습니다. 이때는 `n를 쓰지 않아도 줄 바꿈에 의해 줄 바꿈이 자동으로 감지 됩니다.

     

     

     

     

     

     

    Posted by 옹봉이