바람의나라 window 안에서만 hotkey 활성화 (1)

오호 09.09 00:58 조회 171 댓글 0



Autohotkey를 사용하다 보면

바람의나라가 아닌 editor, 인터넷, 카톡 등 매크로가 동작하지 말아야 하는 곳에서


"5555555", "/딜 파력무참"


이렇게 떠서 당황하는 경우가 생길 겁니다.



Suspend 혹은 ExitApp과 같은 command를 통해서

hotkey를 중단 시킬 수 있습니다.





라고 끝내면 안되겠죠?






사람 인지라 깜빡하는 경우가 생기기 마련이잖아요?


너무 불편하지 않나요?


프로그램 이름이


단순 "keymacro"도 아니고

무려 "Autohotkey" 인데


설마 window를 왔다 갔다 할 때마다

Hotkey를 수동으로 enable/disable 해줘야 한다면

이름값을 하지 못하는 프로그램이지 않을까요?



그래서 autohotkey가 키매크로와 다르게

그 이름값을 한다는 것을 보여드리려고 합니다.


지정한 hotkey들이 바람의나라 창이 활성화 되어 있을 때만 동작하고

그렇지 않을 떄는 hotkey가 동작하지 않게 하려고 합니다.


v1.1

#IfWinActive 바람의 ; 바람의나라 창이 활성화 상태일 때
PgUp::SetTimer, Heal, 70  ; 70ms 마다  자동기원 반복
PgDn::SetTimer, Heal, off ; 자동기원 반복 종료
#IfWinActive ; 여기까지

#IfWinNotActive 바람의 ; 바람의나라 창이 활성화되지 않았을 때
PgUp::SetTimer, Heal, off ; 자동기원 반복 종료
PgDn::SetTimer, Heal, off ; 자동기원 반복 종료
#IfWinActive ; 여기까지



v2.0

#HotIf WinActive("바람의") ; 바람의나라 창이 활성화 상태일 때
PgUp::SetTimer(Heal, 70) ; 70 ms 마다 자동기원 반복
PgDn::SetTimer(Heal, 0)  ; 자동기원 반복 종료
#HotIf ; 여기까지

#HotIf !WinActive("바람의") ; 바람의나라 창이 활성화되지 않았을 때
PgUp::SetTimer(Heal, 0)  ; 자동기원 반복 종료
PgDn::SetTimer(Heal, 0)  ; 자동기원 반복 종료
#HotIf ; 여기까지



#ifWinActive <window title>

#ifWinActive


사이에 지정된 hotkey들은

<window title>에 해당하는 window가 활성화 되었을 때만 

동작하게 끔 구분하는 구문입니다.



#ifWinNotActive <window title>

#ifWinNotActive


사이는 그 반대겠죠?





이런 식으로 바람의나라 창 안에서만 동작할 hotkey와

다른 창에서 동작할 hotkey들을 구분 할 수 있습니다.



이렇게 하면 따로 suspend 여부를 신경 쓰지 않아도

원하는 hotkey가 원하는 곳에서만 동작하는

안정적인 "'Auto'hotkey" 를 쓰실 수 있습니다.




--------------------------------------------------------------------------------------
그런데 여기서 짚고 넘어가야 하는 부분이 하나 더 있습니다.

바람의나라 창 제목은 분명



인데, 왜

  "바람의"

까지만 적어도 동작하는가? 라는 의문이 남아있죠.



이 내용은 SetTitleMatchMode와 관련 있고

다음과 같은 Mode들이 있습니다.


1. 창 제목이 지정된 WinTitle로 시작하는지 확인
                               (전방 일치)(빠름)

2. 창 제목 어디든 WinTitle이 포함되어 있는지 확인
                               (중간 일치)

3: 창 제목이 정확하게 WinTitle과 일치하는지 확인
                               (완전 일치)


기본적으로 SetTitleMatchMode는 1로 설정되어 있습니다.(v1.1)
(v2.0은 기본값이 2)

따라서 WinTitle의 앞 부분만 맞춰주면 되기 때문에

"바람의"

까지만 적어줘도 잘 동작하게 됩니다.

바꾸고 싶은 경우 이렇게 바꿀 수 있습니다.
SetTitleMatchMode 2




댓글 0