본문 바로가기
이미지맥스 그리고 루아(lua)/[응용] 내장함수 활용

[이미지맥스] 마우스를 클릭한 상태를 유지 하는 방법 MouseDown(), MouseUp()

by 위치결정 2021. 8. 2.
반응형

이미지맥스를 이용하여 자동화 툴을 제작하며 마우스 클릭을 누른체 유지해야 하는 경우가 있습니다.

이경우 lua 스크립트의 내부함수 Mouse() 의 DOWN, UP 인수를 활용하여 해당 동작을 꾸밀수 있습니다.

 

-- 마우스 좌버튼 누름 함수
function mouseDown(ix, iy, rx, ry, ms)
    local rx = rx or 0
    local ry = ry or 0
    local rx = math.random(-rx, rx)
    local ry = math.random(-ry, ry)

    local ix = ix + rx
    local iy = iy + ry
    local ms = ms or 0

    Mouse(LBUTTON, DOWN, ix, iy)
    if ms > 0 then
        Sleep(ms)
        Mouse(LBUTTON, UP, ix, iy)
    end
    print('mouseDown() : '..ix, iy)
end
-- >> 인수: ix, iy (마우스클릭좌표), rx, ry (클릭좌표 랜덤가변), ms (누름 유지시간)


-- 마우스 좌버튼 뗌 함수
function mouseUp(ix, iy)
    Mouse(LBUTTON, UP, ix, iy)
    print('mouseUp() : '..ix, iy)
end
-- >> 인수: ix, iy (마우스클릭좌표)

 

위와 같이 mouseDown() 함수를 정의 하여 ix, iy 인수로 지정한 좌표에 마우스 클릭을 유지할수 있습니다.

 

지정좌표에서 랜덤으로 좌표를 변동을 주기위해 rx, ry 인수를 지정합니다.

math.random() 랜덤 함수를 이용하여 (-설정한 수 ~ +설정한수) 의 값을 취득하여 ix, iy 클릭좌표에 가산해줍니다.

랜덤 인수를 지정하지 않거나 0을 지정하면 랜덤 좌표없이 ix, iy 좌표를 클릭하게 됩니다.

 

특정한 시간동안만 눌렀다가 클릭을 떼기 위하여 시간도 ms 인수로 지정해줍니다.

설정한 시간 (ms 밀리초단위) 만큼 마우스를 눌렀다가 떼게 됩니다.

시간 인수를 지정하기 않거나 0으로 지정하면 계속 누른체 마우스를 떼지 않게 됩니다.

 

특별히 시간을 지정하지 않고 특정 조건에 마우스를 떼려면 시간 인수 ms를 0으로 하거나, 아예 지정하지 않고 원하는 조건에서 마우스뗌 함수인 mouseUp() 를 실행하면 되겠습니다.

 

-- 샘플 예문
-- >> 100, 200 X,Y좌표 지점을 계속 누름
mouseDown(100, 200)


-- >> 100, 200 X,Y좌표 지점을 5초간 눌렀다 뗌
mouseDown(100, 200, 0, 0, 5000)


-- >> 100, 200 X,Y좌표 지점에서 -50,-50 ~ 50,50 사각형의 구역 중 한 곳을 랜덤 10초간 눌렀다 뗌
mouseDown(100, 200, 50, 50, 10000)


-- >> 100, 200 X,Y좌표 지점을 누르고 특정 이미지를 발견시 마우스 뗌
mouseDown(100, 200)
local ret = ImageSearch('image')
if ret == 1 then
    mouseUp(100, 200)
end

 

손가락이 덜 아픕니다.

반응형

댓글