본문 바로가기

카테고리 없음

Autothokey#35, 마우스 클릭 반복하기

반응형

https://youtu.be/CtWoHykEO4g

특정 상황에서 고정된 위치를 계속해서 클릭하는 경우가 간혹 발생합니다.

어떤 상황일지는 각자의 판단에 맡겨야겠지만, 이런 상황에서 무작정 손으로 클릭하는 것은 무척이나 힘든 일입니다. 그래서 그런 경우에 사용할 수 있는 마우스 클릭하기용 스크립트를 만들어 보고자 합니다.

사용할 시나리오는 대략 다음과 같습니다. 

1. 특정 프로그램에서 지속적으로 특정 위치 3군데를 반복적으로 정해진 횟수만큼 클릭을 해 주는 것으로 가정합니다.

   정해진 횟수와 클릭 간격을 msec단위로 입력 받습니다.

2. 3군데 위치를 읽기 위해서 Control + 1, Control +2, Control +3 을 누르면 순차적으로 눌러야 할 위치의 정보로 저장합니다. 만약 두번째, 세번째 위치를 입력할 필요가 없다면 Control + 2, Control + 3을 누르지 않으면 됩니다.

첫번째 위치는 임의의 값으로 넣어 두었으므로 변경이 필요합니다.

3. 실행 단추를 누르면 정해진 횟수만큼 클릭을 반복합니다.

 

이런 시나리오를 만족하기 위해 GUI를 아래처럼 구성했습니다.

이런 GUI를 위한 스크립트는 아래오 같습니다.

 

Gui, Add, Text, x20 y30 w50 h20, 클릭횟수  ;
Gui, Add, Edit, x80 y30 w50 h20 vCnt, 100 ;
Gui, Add, Text, x140 y30 w80 h20, 클릭간격(ms)  ;
Gui, Add, Edit, x230 y30 w50 h20 vSec, 1000 ;

Gui, Add, Text, x20  y65 w120 h20, Ctrl + 1 : 가로 ;
Gui, Add, Edit, x110 y65 w50 h20 vX1, 1368 ;
Gui, Add, Text, x170 y65 w50 h20, 세로 ;
Gui, Add, Edit, x200 y65 w50 h20 vY1, 365 ;

Gui, Add, Text, x20  y100 w120 h20, Ctrl + 2 : 가로 ;
Gui, Add, Edit, x110 y100 w50 h20 vX2, 0 ;
Gui, Add, Text, x170 y100 w50 h20, 세로 ;
Gui, Add, Edit, x200 y100 w50 h20 vY2, 0 ;

Gui, Add, Text, x20  y135 w120 h20, Ctrl + 3 : 가로 ;
Gui, Add, Edit, x110 y135 w50 h20 vX3, 0 ;
Gui, Add, Text, x170 y135 w50 h20, 세로 ;
Gui, Add, Edit, x200 y135 w50 h20 vY3, 0 ;

Gui, Add, Button, x150 y170 w100 h20, 실행 ;
Gui, Show, , 광클릭
CoordMode, Mouse, Screen

return

 

다음으로 Control + 1등이 눌렸을때 할 일을 만듭니다. 

먼저 현재 마우스 위치를 읽어 와야 합니다. 이를 위해 MouseGetPos를 이용하면 됩니다. 읽어온 x, y값을 순차적으로 저장합니다.

^1::
  MouseGetPos, x, y 
  GuiControl,,X1, %x%
  GuiControl,,Y1, %y%
return

 

^2::
  MouseGetPos, x, y 
  GuiControl,,X2, %x%
  GuiControl,,Y2, %y%
return

^3::
  MouseGetPos, x, y 
  GuiControl,,X3, %x%
  GuiControl,,Y3, %y%
return

 

좀 더 멋있게 작성할 방법이 있을텐데, 이번에는 그냥 단순하게 만들었습니다. 3가지를 효율적으로 만드는 것은 여러분 몫으로 남기겠습니다. 각각의 위치가 저장되어 있는 상태에서 실행단추를 누르면 정해진 횟수만큼 정해진 시간간격으로 클릭하도록 해 주면 되겠습니다. 

먼저 변수값을 읽어 오고, 정해진 횟수(Cnt)만큼 Loop를 돌면서 MouseClick을 합니다. 역시 정해진 위치(X1, Y1)을 클릭합니다. 이후에 정해진 시간 간격만큼 sleep으로 대기합니다. 첫번째 클릭이 끝나면 두번째 클릭을 해야 하는데 만약 위치가 0이 아닐 경우에만 클릭하도록 해 놓았습니다. 세번째 위치도 역시 0이 아닐 경우에만 클릭하도록 했습니다.

 

Button실행:
{
  Gui, Submit, nohide
  Loop %Cnt%
  {
    MouseClick, left, %X1% , %Y1%
    sleep, %Sec%
    if X2 != 0
    {
      MouseClick, left, %X2% , %Y2%
      sleep, %Sec%
    }
    if X3 != 0
    {
      MouseClick, left, %X3% , %Y3%
      sleep, %Sec%
    }
  }
  GuiControl, disable, 설정
}
return

 

전체 스크립트는 아래에서 다운로드 받으시기 바랍니다.

Click.ahk
0.00MB

실행파일만 필요한 분들은 아래에서 다운로드 받으시기 바랍니다.

Click.exe
0.77MB

추가적으로 더 많은 클릭이 필요하다면 구조를 다르게 설계하고 새롭게 작성하는게 효율적일것 같습니다.

반응형