방개
비밀번호를 잊어버리셨나요?

질문

제가 만든 스크립트의 문제점을 알려주세요 ㅠㅠ (너무 자주 질문하는 거면 말씀해 주세요)

    • 글자 크기
Gui, Font, s09, KoPub돋움체 Bold
Gui, +LastFound +AlwaysOnTop -Caption
Gui, Add, Tab3, x0 y0 w75 h130 -Wrap, C|F
CoordMode, Mouse, Screen
MouseGetPos, vx, vy

Gui, Tab, 1

Gui, Tab, 2

Gui, Show, x2045 y200 w75 h130
return

Loop
{
	If (vx > 1917 && vy > 200 && vy < 330)
	WinMove, Startup Tools.ahk, 1845, 200
	break
}

Loop
{
	If (vx < 1917 || vy > 200 || vy < 330)
	WinMove, Startup Tools.ahk, 2045, 200
	break
}

ExitApp:
return

스크립트 전문 중에서 쓸데 없는 것들은 뺐습니당,

 

1. 만들려는 것: 마우스 커서가 특정 공간 안에 들어가면 평소에는 화면 밖에 있는 창을 화면 안으로 가져온 뒤, 해당 창 밖으로 마우스를 빼면 창 위치가 원래 자리로 돌아가는 것.

2, 질문사항

1) 지금 스크립트 속에 루프가 2개(이하 각각 '루프1', '루프2') 있는데, 루프2가 없는 상태로 실행해도 창이 안으로 들어오지 않습니다. 왜 그런가요?

2) 제 생각에 이걸 제대로 작동시키려면 루프1이 작동 중일 땐 루프2가 멈추고, 루프2가 작동 중일 땐 루프1이 멈추게 해야 할 것 같은데 그걸 어떻게 만드나요?

    • 글자 크기
댓글 2
  • 2020.10.9 22:47 댓글
    Gui, Font, s09, KoPub돋움체 Bold
    Gui, +LastFound +AlwaysOnTop -Caption +hwndGuiHandle ; 윈도우를 더 명확하게 다루기 위해서 핸들변수를 추가했어용.
    Gui, Add, Tab3, x0 y0 w75 h130 -Wrap, C|F
    CoordMode, Mouse, Screen
    ;MouseGetPos, vx, vy ;요거는 좌표가 필요할때마다 실행해줘야 합니당 때문에 루프 안쪽으로 넣어야해요
    
    Gui, Tab, 1
    
    Gui, Tab, 2
    
    Gui, Show, x2045 y200 w75 h130
    ;return  ; 루프가 돌기전에 메인 스크립트가 리턴되어서 루프가 실행되지 않은거 같아요
    
    stopLoop := false  ; 나중에 루프를 종료시키기 위한 전역변수를 추가했어욥
    Loop
    {
    	MouseGetPos, vx, vy ; 위에 있던 거를 루프 안쪽으로 가져왔어요
    	If (vx > 1845 && vy > 200 && vy < 330)
        ; 마우스 감지하는 구간이 너무 짧아요 적어도 윈도우 내부에서는 마우스가 움직일수 있어야 해요
        ; 그래서 윈도우가 나타나는 지점인 1845로 변경했어욥
    		WinMove, % "ahk_id" GuiHandle,, 1845, 200 
            ; 매개변수 순서가 조금 잘못되었어요 좌표는 3번째부터 넣어야해요
            ; 또한 스크립트 파일 이름 대신 윈도우 핸들을 이용해서 윈도우를 이동시켰어요
            ; 스크립트 파일 이름은 나중에 변경될수 있기때문에 좋은 선택이 아니에욥
    	else If (vx < 1917 || vy > 200 || vy < 330)
    		WinMove, % "ahk_id" GuiHandle,, 2045, 200
    	sleep 30
    	; 짧은 작업을 긴 시간 반복하는 무한루프에는 이렇게 쉬는 시간을 주어야합니다
    	; 보통 슬립30으로 하면 약 30프레임 정도로 작업을 하게됩니다
    }
    until stopLoop ; 이 전역변수가 트루가되면 루프가 종료됩니다.
    Return
    
    GuiClose:
    stopLoop := true
    ExitApp

     

  • 먹꼼님께
    수뼈글쓴이
    2020.10.10 21:54 댓글

    와.. 형님 감사합니다 ㄷㄷ... 앞으로 더 열심히 배워갈게요

댓글 달기

서버에 요청 중입니다. 잠시만 기다려 주십시오...