오토핫키 커뮤니티

조회 수 726 추천 0 댓글 9
Gui, Add, Text, x10 y10 v초, 00
Gui, Add, Text, x+15 w20 v시간, 0

Gui, Add, Button, x10 y+10 w90, 초타이머
Gui, Add, Button, x10 y+10 w90, 시간타이머

Gui, Show, AutoSize, 테스트
return

Button초타이머:
    Gui, Submit, Nohide
    타이머시분초(0,2,0)
return

Button시간타이머:
    Gui, Submit, Nohide
    대기시간(80)
return

타이머시분초(HH := 0, MM := 0, SS := 0)
{
    if (HH > 0 || MM > 0 || SS > 0)
    {
        Loop 60
        {
            SS_ := 60-A_Index
            GuiControl, +C6798FD, 초
            GuiControl, , 초, % SS_
            Sleep 1000
        }
    }
}

대기시간(ChangeNum, TextColor := "CFF8866")
{
    Loop %ChangeNum%
    {
        GuiControl, % "+"TextColor, 시간
        GuiControl, , 시간, % ChangeNum
        ChangeNum := ChangeNum-1
        Sleep 1000
    }
    GuiControl, , 시간, % ChangeNum
}

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

소스는 이렇게 됩니다...
여기서 대기시간를 먼저 실행하고 타이머시분초를 버튼을 눌르면 대기시간은 멈추는데요..
대기시간이 돌아가면서 타이머시분초도 같이 할려면 어떤 명령어를 넣어야 될까요...

원래부터 동시에는 불가능한 것인지...
궁금합니다...

  • Hangoon 2016.05.15 23:55

    셋타이머로 하시면됩니다

  • Rabbit 2016.05.16 12:53
    셋타이머도 함수로는 안되는건가요..?
    타이머 := Func("타이머시분초").Bind("0","3","0")
    SetTimer, % 타이머, on

    대기 := Func("대기시간").Bind("80")
    SetTimer, % 대기, on

    인터넷에 찾아봐서 해봤는데도... 두개가 같이 작동은 안되네요..ㅠ
  • Rabbit 2016.05.16 12:58

    라벨 이용해서 셋타이머로 해도 같이 안되는데..
    혹시 예제 하나만 주실수 있으신가요..?

  • Hangoon 2016.05.16 14:38

    루프를 이용하니까 그렇죠
    루프로 하지마시고 셋타이머만 이용하시면 되는겁니다

    간단하게 설명드릴게요. 저도 잘 모르니 간단하게 밖에 설명 못드립니다 ㅋ

    프로그래밍에는 쓰레드라는 용어가 있습니다.
    스크립트가 실행됐을때 1번라인부터 순차적으로 쭉쭉쭉 실행을 합니다.
    그러다 exit나 return을 만나면 멈춥니다. 이런 일련의 흐름을 쓰레드라고 합니다.

    래빗님의 스크립트를 실행시키면 Gui를 생성하고 화면에 나타내주면서 하나의 쓰레드가 완료됩니다.
    Gui의 텍스트 요소를 생성하고, 버튼도 생성하고, 화면에 출력해주고 Return을 만나 종료됩니다.
    하나의 쓰레드가 시작하여 일련의 작업을 하고 종료된 것입니다.

    그리고 생성된 버튼을 눌러 G라벨을 실행시키면 또 하나의 쓰레드가 시작됩니다

    오토핫키는 동시에 하나의 쓰레드만 실행합니다. 멀티 쓰레드는 기본적으로는 안돼요
    (하는 방법이 있긴합니다. 전 방법을 모릅니다. 아직까지 필요성을 심하게 느끼진 않아서... 물론 강좌는 인터넷 찾으면 나옵니다)

    하나의 쓰레드를 실행 중이고 아직 종료된 상태가 아닐때 다른 쓰레드가 시작되면 오토핫키가 하는 동작은 기존 쓰레드를 중지하고, 새로 실행된 쓰레드를 완료한 뒤 기존 쓰레드로 복귀합니다.
    셋타이머라 할지라도 기존 실행중인 쓰레드를 중지시키고 셋타이머로 인해 새로 실행된 쓰레드를 완료한 뒤 기존 쓰레드로 복귀하게 되는 것입니다. (순간적으로 실행되었다 종료되고, 일정시간 뒤 다시 실행되도록 만들면 마치 멀티쓰레드처럼 보이게 할 수는 있겠지요. 그래서 필요성을 절실하게는 못느끼고 있다고 한것.. 물론 매크로 제작에 한해서만요)

    즉 래빗님의 코드에서 단순히 셋타이머만으로 함수를 실행 한다고 해도,
    셋타이머로 실행된 쓰레드가 루프이기 때문에 해당 루프문을 모두 종료하고 Return이나 exit를 만나서 쓰레드가 종료될때까지 기존 실행되던 동작은 일시정지하게 됩니다. 


    - 여기서 대답이 나옵니다. 요약하자면 동시에 함수 두개를 실행할 수 있느냐? 안됩니다

    - 하지만 타이머같이 간단한 동작은, 마치 두개의 타이머가 동시에 실행되는처럼 보이게는 할 수 있다. 라는 거죠(셋타이머 이용)

    그리고 타이머를 짜시려면 sleep을 이용하는것보단... 오토핫키에는 A_TickCount라는 훌륭한 내장변수가 있습니다. 스크립트가 실행된 이후부터 시간을 계속해서 누적 카운트 해주는 변수입니다. 이걸 이용하시는게 훨씬 정확한 타이머를 짜실 수 있을겁니다

    래빗님 코드를 수정해드리려해도 정확히 뭘하고 싶으신지 몰라서.. 위 코드가 완전한 코드도 아닌것 같구요.
    그냥 테일 오핫게에 찾아보면 타이머 예제 있을거에요. 제가 댓글 달았던 기억이 있네요..한번 참고해보세요.

  • Rabbit 2016.05.16 16:20
    네.. 좋은정보 감사합니다.
    더 찾아보고 한번 더 해봐야겠네요.
  • profile
    Jay 2016.05.16 14:24
    셋타이머도 완벽하게 동시 구동이라기보단

    원래 진행되던 로직사이에 틈이 있다면 잠시

    자리를 빌려 먼저 실행된다는 개념으로 알고있어서..

    아마 완벽한 동시진행이 안된다는 말씀이면

    셋타이머로는 원하시는 구동이 안되는게 맞을거에요
  • Rabbit 2016.05.16 16:25
    그럼.. 제가 원하는 구동을 할려면 어떤걸 해야될까요....?ㅠㅠ
  • 이무 2016.05.17 05:53

    정확히 어떤동작은 원하시는지 모르겠지만, 셋타이머로 요렇게 표현하면 될거예요. 


    -----------------------------------------------------------------


    Gui, Add, Text, x10 y10 v초, 00
    Gui, Add, Text, x+15 w20 cFF8866 v시간, 0

    Gui, Add, Button, x10 y+10 w90, 초타이머
    Gui, Add, Button, x10 y+10 w90, 시간타이머

    Gui, Show, AutoSize, 테스트
    return

    Button초타이머:
        Gui, Submit, Nohide
    SS := 60
        SetTimer 타이머시분초, 1000
    return

    Button시간타이머:
        Gui, Submit, Nohide
    ChangeNum := 80
        SetTimer 대기시간, 1000
    return

    타이머시분초:
    {
    GuiControl, , 초, % SS--
    if (SS = -1)
    SetTimer 타이머시분초, off
    return
    }

    대기시간:
    {
    GuiControl, , 시간, % ChangeNum--
    if (ChangeNum = -1)
    SetTimer 대기시간, off
    return
    }

  • Rabbit 2016.05.17 10:11
    앗 위에 A_TickCount 추천해주셔서 봐가지고 요리조리 만지다가 했는뎅ㅎㅎ;;
    이런게 간단한 방법도 있었군요....ㅎ;;
    머리가 돌인가봐요 ㅋㅋ
    감사합니다!!

List of Articles
분류 제목 글쓴이 최근변경 추천
자유 이미지흰색 빨강으로 바꾸기 성공했네요 (슉슉이님감사) 제발등업좀2 2016.06.19 0/0
질문 Sleep 에 Edit창에 입력한 값을 적용하려고합니다. 5 우리강아지 2016.05.19 0/0
질문 adb 관련 소스좀 얻을수있을까요? 1 혼자서는 2016.05.18 0/0
질문 이미지를 흰색 검정으로만 재 구성할수있을가요? 18 제발등업좀2 2019.08.17 0/0
질문 이미지서치질문..ㅠㅠparse.. 2 혜띠뿌뿌 2016.05.16 0/0
질문 함수를 중복(동시)에 2~3개를 할 수 있을까요? 9 Rabbit 2016.05.17 0/0
질문 아주간단한 매크로하나 만들어볼려구 하는데요 4 토토가가 2016.06.10 0/0
질문 체크박스 질문합니다. 4 흑콘 2016.05.15 0/0
질문 오토핫키 초보 질문. 1 서승현 2016.05.14 0/0
질문 if 문 질문 올려봅니다, 4 수지가좋아 2016.05.14 0/0
질문 이미지 서치 질문합니다!! 9 셋쇼마루 2016.05.15 0/0
질문 녹스 질문점요 4 krip11 2016.05.21 0/0
질문 비활성 질문받아주실분 ㅠ 리슈니안 2016.05.12 0/0
질문 특정좌표안에 마우스이동 5 흑콘 2016.05.13 0/0
자유 딜콜 오류 힘들지말입 2016.05.12 0/0
질문 스크린 절대좌표로 클릭하는법ㅠㅠ 2 웅쓰1 2016.05.13 0/0
질문 어디가 문제인지 도움좀... 1 혼자서는 2016.05.12 0/0
질문 gdip_imagesearchWithHwnd 함수가 어떤 켬퓨터에서 작... 5 북붕 2016.05.15 0/0
자유 그냥 간단하게 여태 만든거 올려봅니다. 3 Vesper 2016.05.15 0/0
자유 비활성 이미지서치 소스 공유 해주실 분 계신가요.... 8 Rabbit 2016.06.10 0/0
Board Pagination Prev 1 ... 120121122123124125126127128 ... 209 Next
/ 209

전체 최신 인기글

전체 주간 인기글