출처
Event 모드
Event 모드는 WindowsAPI의 keybd_event, mouse_event를 이용해 한개씩 이벤트를 생성하는 방식
일정한 간격으로 개개의 조작 이벤트를 생성. 이벤트 실행 도중 유저가 실시한 조작이 개입이 가능. 이것을 막으려면 BlockInput 커멘드로 유저의 조작을 무효화 할 수 있다.
조작의 간격은 SetKeyDelay, SetMouseDelay커맨드로 설정할 수 있다.
예)
+q::
SetKeyDelay, 500
Send qwerty
return
-> qwerty가 0.5초 간격으로 출력, 도중에 사용자가 키입력을 하면 매크로 실행 도중 입력이 된다.
Input 모드
입력의 재생속도가 매우 빠르다. 사용자가 수행한 입력은 매크로가 끝난뒤에 실행된다.
다른 프로그램이 하위레벨키훅(?)을 사용하고있으면 Input모드의 성능이 크게 저하된다. 때문에 다른 AutoHotkey스크립트가 동작하는 경우, Input모드는 자동으로 Event모드로 변경된다. 또한 Windows95/NT에서는 Input모드를 이용하지 못하고 Event모드로 변경된다.
Play 모드
Play모드에서는 일련의 조작이 액티브 윈도우에 보내진다.
input 모드보다 저속이지만, SetKeyDelay, -1. -1이 설정된 Event모드보다는 고속으로 동작한다.
SetKeyDelay,10,10,Play로 설정하면, Event모드와 같게키 조작동안 일정한 간격을 열리게 할 수 있다.
재생중에 유저가 실시한 조작은 동작 종료 뒤로 밀린다.
다만 윈도우 키를 포함한 시스템 hot키는 동작하기 때문에 시작 메뉴 등에 의해 방해받는 경우가 있다.
AutoHotKey가 키보드 훅을 사용하는 경우 자동으로 윈도우 키가 비활성화되어 오동작을 방지한다.
Play모드로 windows키(LWin,RWin)을 눌러도 Win+R등의 hot key는 반응하지 않는다.
또 CapsLock, NumLock, ScrollLock 키의 토글 상태를 변경하는 것도 할 수 없다.
재생중 Ctrl+Alt+Del이나 Ctrl+Esc를 누르면 재생 도중 종료되어, 스크립트의 다음이 실행된다.
플레이 모드에서 생성한 키가 눌린 상태는 GetKeyState등에서 검출할 수 없다.
스크립트가 자신의 윈도우에 보내졌을때는 예외적으로 검출할 수 있지만, Rshift등과 같이 키의 좌우를 구별할 수 없다.
Remarks
어느 모드도, 특정의 애플리케이션을 능숙하게 조작할 수 없는 경우가 있다.
조작하고 싶은 애플리케이션에 따라 구분하여 사용할 필요가 있다.
Event 모드
Event 모드는 WindowsAPI의 keybd_event, mouse_event를 이용해 한개씩 이벤트를 생성하는 방식
일정한 간격으로 개개의 조작 이벤트를 생성. 이벤트 실행 도중 유저가 실시한 조작이 개입이 가능. 이것을 막으려면 BlockInput 커멘드로 유저의 조작을 무효화 할 수 있다.
조작의 간격은 SetKeyDelay, SetMouseDelay커맨드로 설정할 수 있다.
예)
+q::
SetKeyDelay, 500
Send qwerty
return
-> qwerty가 0.5초 간격으로 출력, 도중에 사용자가 키입력을 하면 매크로 실행 도중 입력이 된다.
Input 모드
입력의 재생속도가 매우 빠르다. 사용자가 수행한 입력은 매크로가 끝난뒤에 실행된다.
다른 프로그램이 하위레벨키훅(?)을 사용하고있으면 Input모드의 성능이 크게 저하된다. 때문에 다른 AutoHotkey스크립트가 동작하는 경우, Input모드는 자동으로 Event모드로 변경된다. 또한 Windows95/NT에서는 Input모드를 이용하지 못하고 Event모드로 변경된다.
Play 모드
Play모드에서는 일련의 조작이 액티브 윈도우에 보내진다.
input 모드보다 저속이지만, SetKeyDelay, -1. -1이 설정된 Event모드보다는 고속으로 동작한다.
SetKeyDelay,10,10,Play로 설정하면, Event모드와 같게키 조작동안 일정한 간격을 열리게 할 수 있다.
재생중에 유저가 실시한 조작은 동작 종료 뒤로 밀린다.
다만 윈도우 키를 포함한 시스템 hot키는 동작하기 때문에 시작 메뉴 등에 의해 방해받는 경우가 있다.
AutoHotKey가 키보드 훅을 사용하는 경우 자동으로 윈도우 키가 비활성화되어 오동작을 방지한다.
Play모드로 windows키(LWin,RWin)을 눌러도 Win+R등의 hot key는 반응하지 않는다.
또 CapsLock, NumLock, ScrollLock 키의 토글 상태를 변경하는 것도 할 수 없다.
재생중 Ctrl+Alt+Del이나 Ctrl+Esc를 누르면 재생 도중 종료되어, 스크립트의 다음이 실행된다.
플레이 모드에서 생성한 키가 눌린 상태는 GetKeyState등에서 검출할 수 없다.
스크립트가 자신의 윈도우에 보내졌을때는 예외적으로 검출할 수 있지만, Rshift등과 같이 키의 좌우를 구별할 수 없다.
Remarks
어느 모드도, 특정의 애플리케이션을 능숙하게 조작할 수 없는 경우가 있다.
조작하고 싶은 애플리케이션에 따라 구분하여 사용할 필요가 있다.
'Programming > AutoHotKey' 카테고리의 다른 글
카카오톡 대화 내보내기로 저장한 텍스트 파일 인코딩 형식이 Win OS에서 깨지는 것에 대하여 (0) | 2019.05.15 |
---|---|
AutoHotKey튜토리얼 알게된점 정리(계속수정) (0) | 2019.05.09 |
AutoHotKey Intro (0) | 2019.05.09 |