매크로

조회 수 8215 추천 2 댓글 15

보통 오토핫키에서 2가지 이상의 명령을 동시에 처리하기 위해서 SetTimer를 사용합니다 예를 들면...


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

F1::

SetTimer, sendafunc, 10

SetTimer, sendbfunc, 10

SetTimer, sendcfunc, 10


Esc::

ExitApp

return


sendafunc:

Send, {a}

return


sendbfunc:

Send, {b}

return


sendcfunc:

Send, {c}

return

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


이렇게 코드를 짜고 메모장을 킨 다음 F1 키를 누르면 10ms 간격으로 a,b,c가 거의 동시에 입력되면서


메모장에 abcabcabcabc 이런식으로 계속 출력이 되게 됩니다


하지만 타이머가 걸려있는 각각의 라벨에 Loop가 들어있으면 어떻게 될까요? 예를들어...


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


F1::

SetTimer, sendafunc, 100

SetTimer, sendbfunc, 100

SetTimer, sendcfunc, 100


Esc::

ExitApp

return


sendafunc:

Loop, 10

{

Send, {a}

Sleep, 10

}

SetTimer, sendafunc, off

return


sendbfunc:

Loop, 10

{

Send, {b}

Sleep, 10

}

SetTimer, sendbfunc, off

return


sendcfunc:

Loop, 10

{

Send, {c}

Sleep, 10

}

SetTimer, sendcfunc, off

return


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


이런식으로 코드를 짜고 메모장을 킨 다음 F1키를 누르면 앞에서 돌아가던 루프문에 다음 루프문이 끼어들게 되면서 


다음과 같이 출력이 됩니다


abccccccccccbbbbbbbbbaaaaaaaaa


결국 뒤쪽 루프문부터 순서대로 실행되는것과 비슷한 결과를 얻게되죠


그렇다면 각 루프문이 동시에 실행되도록 하려면 어떻게해야할까요


방법은 각 루프문을 별도의 스크립트로 만든다음 이를 다른 스크립트에서 동시에 실행시켜주면 됩니다


예를들면 우선 test.ahk / a.ahk / b.ahk / c.ahk 이렇게 4개의 스크립트를 따로 만든다음 한 폴더에 두고


각각의 스크립트엔 다음과 같이 코드를 입력해줍니다


test.ahk---------------------------------------------------------------

F1::

Run, a.ahk

Run, b.ahk

Run, c.ahk

return

test.ahk---------------------------------------------------------------


a.ahk-----------------------------------------------------------------

Loop, 10

{

Send, {a}

Sleep, 10

}

return

a.ahk-----------------------------------------------------------------


b.ahk-----------------------------------------------------------------

Loop, 10

{

Send, {b}

Sleep, 10

}

return

b.ahk-----------------------------------------------------------------


c.ahk-----------------------------------------------------------------

Loop, 10

{

Send, {c}

Sleep, 10

}

return

c.ahk-----------------------------------------------------------------


그다음 test.ahk를 실행시키고 F1 키를 눌러보면 각 루프문이 거의 동시에 돌아가면서 


abcbacbcabcacababcabccabcbabac


이런식의 최종결과를 얻을 수 있게 됩니다



  • 노터스 2016.09.18 01:30

    AHK_H를 이용하면, Multi-thread 작업이 가능 하다고 하더군요.

    AHK_H DLL로 스크립트 작성한뒤, 각각 한 스크립트 안에서 불러오고, 프로세서/코어에서 개별 작업이 가능 하다고.... 한걸 어디서 본거 같습니다 ㅎ

    https://autohotkey.com/board/topic/75865-ahkdll-multi-threading-basic-examples/

    https://hotkeyit.github.io/v2/docs/AutoHotkeyDll.htm

  • my0312 2016.09.18 03:37
    이런게 있는줄은 몰랐네요 좋은 정보 감사합니당 ㅎㅎ
  • 하연데디 2016.10.27 10:49
    이거 도전해보고 있습니다.ㅎㅎ 멀티 쓰레드로 역활 분할해 놓으면 좋을 것 같아서요 ...
  • 선녀는후끈해 2016.10.20 15:39

    또한 Critical, On, Off를 이용하여, 서로의 함수에 방해받지 않게 추가도 가능합니다.

  • 하연데디 2016.10.25 15:47

    아 정말 필요하던 부분이었는데 감사합니다!!!

  • profile
    크농 2016.10.25 20:21

    settimer도 병렬은 아니였군요! ㅎㅎ

    좋은정도 알아갑니다 :)

  • 스웨이스 2016.11.02 11:37

    작성자님 이렇게 병렬로 쓸려고 했는데 실행하면 예 아니오 라는 창이 반복해서 뜨네요. 왜이런건가요..?

  • my0312 2016.11.03 15:44
    아 오토핫키 여러개 실행시키려면 singleinstance 라는 옵션을 비활성화 시켜야하는데 깜빡했네요 오토핫키 헬프에 가셔서 single 키워드로 검색하면 자세히 나올거에요
  • 스웨이스 2016.11.03 16:45
    감사합니다^^
  • 스웨이스 2016.11.05 18:06
    my0312님 run으로 실행시킨 스크립트를 원래 스크립트 종료시킬때 같이 종료하는방법이 있나요??
    다 해결했는데 run스크립트를 종료할려면 따로 키를 지정해야되던데 지정해도 안꺼질때도 있더라구요.
    그리고 키를 지정하면 예/아니오 창이 뜰때도 있구요. 원래 스크립트 종료할때 같이 종료하는 방법은 없을까요??ㅜ
  • my0312 2016.11.09 11:05
    음... 그 부분은 잘모르겠네요 원래 스크립트에서 다른 스크립트를 실행시켰을 때
    다른 스크립트는 return을 만나면 그때그때 loop가 끝나는대로 알아서 종료가 될텐데 이상하네요..
  • 스웨이스 2016.11.09 18:49

    그렇군요. 감사합니다 ㅎㅎ

  • 오토웹 2016.11.19 09:55

    컨트롤타워 스크립트(test.ahk) 내 다음 명령어,라벨 추가

    onexit, exit (스크립트 상단에 추가)

    exit:
    sendMessage, 0x112, 0xF060,,, a.ahk
    sendMessage, 0x112, 0xF060,,, b.ahk
    sendMessage, 0x112, 0xF060,,, c.ahk
    exitapp
    return

  • 좌통닭우치킨 2017.05.07 18:43

    좋은 정보 감사합니다

  • 바남 2018.10.21 00:07

    감사합니다 하나의 스크립트로 셋타이머를 하다보니 겹쳐져서 꼬이는부분이 많았는데 이 방법으로도 해봐야겠네요

    혹시 critical 을 추가하게된다면 

    a.ahk ,b.ahk, c.ahk에 추가해야하나요? 아니면

    test.ahk 에 추가를 해야하나요?


List of Articles
분류 제목 글쓴이 최근변경 추천
정보 초보가 초보에게;; 핫키 사용법 8 악동주성 2016.09.03 4/0
정보 블루스택 해상도 변경하기... 10 로뎀나무 2015.04.15 4/0
정보 브레이브 헌터 ... 매크로.. 1 제발등업좀2 2015.07.10 4/0
정보 팝업 알림, CleanNotify 3 예지력1 2015.11.11 4/0
정보 테일스타 내 포인트 조회기 16 와이로 2017.07.04 4/0
정보 MS오피스 스타일 GUI 프로토타입 6 예지력1 2016.04.16 4/0
정보 간단한 방법으로 길오아 오토핫키를 만들어보세요^^ 21 럭셔리형아 2018.02.07 4/0
정보 스크린샷 캡춰방법 (마지막이야기님 요청) 14 호로록뚝딱 2015.03.24 3/0
정보 GUI - 파일(폴더) 목록을 DropDownList로 만들기 14 모바게 2016.06.13 3/0
정보 오토핫키 미니 에디터 5 예지력1 2016.07.02 3/0
정보 [지니모션][블레이드][핸콕님매크로]+추가기능 v1.1 23 잠깐만요 2015.05.27 3/0
정보 Array 확장 13 모바게 2015.07.16 3/0
정보 DynaScript - Child 프로세스로 코드 실행 13 예지력1 2019.07.16 3/0
정보 INI 를 쉽게 사용해봅시다. 11 모바게 2017.11.01 3/0
정보 지니모션 디바이스(타이틀) 검색 ddl 소스 9 핸콕 2015.10.11 3/0
정보 제가 쓰는 픽셀피커입니다(스크립트) 6 와이로 2017.02.11 3/0
정보 오토핫키를 간단히 쓰고싶지만 너무 어렵다고 느낄때 9 HyunsD 2018.02.07 3/0
정보 앱아이콘 터치없이 adb로 앱 실행 시키는 방법 18 와이로 2021.01.23 3/0
정보 간단하게 테스트해본 쿠키런 생명보내기 매크로 Script... 1 한길 2014.09.05 2/0
정보 비활성 클릭과 클릭 좌표의 오차에 대해서 3 lidmt 2016.04.07 2/0
Board Pagination Prev 1 23456 7 Next
/ 7

전체 최신 인기글

전체 주간 인기글