매크로

조회 수 8266 추천 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
분류 제목 글쓴이 최근변경 추천
정보 오토핫키 이미지 스위치... 6 파더 2015.11.27 0/0
정보 오토핫키 이미지 서치 테스트용 1 너울 2015.05.04 0/0
정보 오토핫키 미니 에디터 5 예지력1 2016.07.02 3/0
정보 오토핫키 Themida 패킹 하는법 6 파더 2015.03.10 2/0
정보 오토핫키 if 기본부분인데 이해가 안돼서 도와주세요! 4 slka 2018.10.16 0/0
정보 오토핫키 Fileinstall 간단하게 적기. 2 은다 2015.03.25 0/0
정보 오랫만에 들러서 하나 투척하고 가요 ^^ 7 로뎀나무 2019.07.30 0/0
정보 여러개의 루프문 병렬로 동시에 돌리기 15 my0312 2018.10.21 2/0
정보 앱아이콘 터치없이 adb로 앱 실행 시키는 방법 18 와이로 2021.01.23 3/0
정보 압살맨 플레이어를 활용하여 비활성 이미지서치 압살맨블로그 2022.09.01 0/0
정보 아직도 그림판으로 좌표를 알아 내시는건가요?? 6 미치 2014.12.12 0/0
정보 아르테일 매랜 로나 핵 매크로 취급합니다 얼리언 2024.01.05 0/0
정보 아랫분들의 조언을 통해 블레이드 매크로 만들어봤습니다. 17 앙꼬호빵 2015.01.05 1/0
정보 스크린샷 캡춰방법 (마지막이야기님 요청) 14 호로록뚝딱 2015.03.24 3/0
정보 소스 여러 파일로 관리 하는 팁 7 묵치기 2015.01.20 0/0
정보 소개 : CJon class 1 와이로 2016.06.26 2/0
정보 소개 - Macro Creator (AHK 매크로 제작툴) 14 모바게 2015.08.28 0/0
정보 비활성 클릭과 클릭 좌표의 오차에 대해서 3 lidmt 2016.04.07 2/0
정보 비활성 이미지 서치.. 최소화 꼼수 2 블랙보노 2018.10.16 0/0
정보 비활성 매크로 예문 남겨드립니다. 참고하세요~ 14 호로록뚝딱 2015.08.12 0/0
Board Pagination Prev 1 23456 7 Next
/ 7

전체 최신 인기글

전체 주간 인기글