매크로

조회 수 2225 추천 0 댓글 4

하나의 구이버튼으로 일시정지/재시작을 같이 쓰는방법이 없을까요?

게시판 검색해서 된다고하는걸 찾았는데 저는 안되더라구요;;


Gui, Add, Button, x175 y150 w50 h30 g정지, 정지


Pause := 0


정지:

Pause, Off

if (pause = 0)

{

 Gui, Submit, nohide

 GuiControl,, 정지, 재시작

 Pause, On    <----여기 ON 이 됐으니 멈췄다가 한번 더 누르게되면 여기서부터 시작되는거 아닌가요??

 pause = 1

}

 else if (Pause = 1)

 {

  Gui, Submit, nohide

  GuiControl,, 정지, 정지

  Pause, Off

  pause = 0

 }

 return


틀린부분이나 다른방법이 있다면 알려주세요

 


  • Hangoon 2017.12.21 11:26

    쓰레드 흐름을 잘 생각해보세요

    스크립트가 기존에 수행하고 있던 쓰레드를 메인 쓰레드라고 하고요

    버튼을 누르면 "정지" 라는 쓰레드가 가동된다고 해봅시다.


    메인 쓰레드 수행 중 정지 쓰레드가 가동되면 메인 쓰레드는 일시정지되고 정지 쓰레드가 난입하여 수행됩니다.

    정지 쓰레드 수행중 포즈를 만납니다. 여기서 일시 정지 됩니다.

    사용자는 일시정지를 풀기 위해 다시 버튼을 누릅니다.


    작성자님이 생각한 이론은 정지버튼을 또 누르면 새로운 정지 쓰레드가 인터럽트하여 포즈를 풀고 리턴을 만나고,

    기존의 정지쓰레드는 Pause On 다음줄 부터 재개되어 리턴을 만나고

    메인쓰레드가 재개 된다는 것이지만,


    문제는 하나의 버튼으로 가동된 쓰레드가 끝나기 전까진 다시 버튼을 눌러도 두번째 쓰레드가 시작되지 않는다는거죠


    이 문제를 해결하기 위해서는 정지, 재시작 버튼을 따로 동일한 위치에 만들어서 각각 Pause, On, Pause, Off로 서브루틴을 따로 구현하시고,

    정지버튼은 보이는 상태, 재시작버튼은 Hide상태로 놓고 정지버튼을 누르면 정지버튼을 Hide, 재시작버튼은 show로 전환을 시켜주는 방법이 있고요 


    아니면 상기처럼 하나의 버튼으로 하되 Pause, On, 1 옵션을 주어 사용하는 방법이 있습니다.

    1옵션은 현재의 쓰레드를 정지하는게 아니라 현재의 쓰레드가 인터럽트한 쓰레드를 일시정지하는 효과가 있습니다.

    자세한건 오핫키 공홈 매뉴얼 참고하시길 바래요

  • 공유야우 2017.12.21 15:51
    답변 감사합니다
    말씀하신 첫번째방법으로 하니 잘되네요^^
    두번째방법은 해보니깐...어렵네요 좀더 공부해서 도전해야겠네요~
  • 할거엄따구 2017.12.22 09:30

    덕분에 한 가지 배워가네요~^^

  • 크퀘 2017.12.31 02:19

    Gui, Add, Button, x12 y9 w100 h30 g숫자세기, 시작

    Gui, Add, Button, x122 y9 w100 h30 g중지, 중지(토글)

    Gui, Add, Button, x232 y9 w100 h30 g재시작, 재시작

    Gui, Add, Button, x232 y45 w100 h30 g종료, 종료

    Gui, Add, ListBox, x12 y79 w320 h270 v상태,

    gui, Add, text, x13 y50 w100 h20 v대기시간,

    Gui, Show, w345 h370, 연습

    return


    f1:: 

    pause

    Return 



    숫자세기:


    GuiControl,,상태,20초 세기||


    Loop,20

    {

     대기시간 := 0+A_INDEX

     guicontrol,,대기시간,%대기시간%

     sleep,1000

    }

    대기시간 := 

    guicontrol,,대기시간,%대기시간%

    return




    중지: 

    Send, {f1} 

    Return



    재시작:

    Reload

    return


    종료:

    ExitApp

    return



    저는 이렇게 하는데 어떤가요?



List of Articles
분류 제목 글쓴이 최근변경 추천
질문 한영전환 문제 혹시 해결가능할가요 6 오핫정보공유 2015.08.25 0/0
질문 한스크립트안에 여러가지 스크립트를 넣어 놓을수 있나요? 4 세나블텍 2015.04.22 0/0
질문 한번더 문의드립니다 ㅠㅠ 7 야쿠르트 2015.05.23 0/0
질문 한글깨짐현상 질문있습니다. 14 서시 2015.02.08 0/0
질문 한가지만 더 여쭤보겠습니다. Form load 관련질문~ 1 다람쥐짱 2015.03.23 0/0
질문 한 스크립트내에서 설정변경 방식에 대해 질문입니다. 4 류쿤 2015.06.02 0/0
질문 하드인증 풀어주실분 계실까요? 1 가마우징 2023.03.05 0/0
질문 하드인증 풀 수 있으신분 계신가요? 2 spuo 2023.02.24 0/0
질문 하드인증 푸는법도 있나요? 2 유비스 2017.09.11 0/0
질문 하드인증 푸는방법있나요? 14 매왕 2017.10.31 0/0
질문 하드인증 초보 도움좀 주세요 1 핫키쵝오 2021.03.29 0/0
질문 하드인증 우회(뚫는법) 질문이요 삐뻐 2017.08.15 0/0
질문 하드웨어 키입력 매크로사용할때 문제 2 응애제니 2023.10.18 0/0
질문 하드웨어 엔지엠 매크로에 디디32가 추가 되었습니다. 5 소심비형 2020.03.09 0/0
질문 하나의 키로 pause를 변수와 함께 토글 형식으로 사용 ... 3 인형 2015.06.12 0/0
질문 하나의 구이버튼으로 일시정지/재시작 질문이요 4 공유야우 2017.12.31 0/0
질문 픽셀이 여러게 서치됬는데 서치후 범위줄이는법알려주세요 1 요즘것들 2018.10.16 0/0
질문 픽셀서치후 클릭질문합니다 4 PlusK 2016.07.09 0/0
질문 픽셀서치에서 3 라나바다 2015.03.03 0/0
질문 픽셀서치에관한건데요 2 단백질 2015.05.29 0/0
Board Pagination Prev 1 34567891011 ... 173 Next
/ 173

전체 최신 인기글

전체 주간 인기글