본문 바로가기

연재/오토핫키

[오토핫키] 특정한 창 혹은 프로그램에서만 동작하는 매크로


특정한 창 혹은 프로그램에서만 동작하는 매크로



  오토핫키를 이용한 매크로는 아무래도 기본적으로 특정한 프로그램에만 동작하도록 설정되어 있지 않기 때문에 외부요인(다른 프로그램의 난입이라던가)에 의해 꼬일 가능성이 많습니다. 게임매크로의 경우 갑자기 튕긴다거나 그러면 그 튕김여부를 알 수 있으면 좋겠죠. 이를 알아내기 위해서는 특정 프로그램에서만 동작할 수 있게(Window Title) 추가적인 조건을 분기시키면 되는데요, 그 방법에 대해 알아봅시다.



1. 창 제목 알아내기

  윈도우 제목(Window Title)이 단순하게 창 위쪽에 쓰여있는 경우도 있지만 아닌 경우도 많습니다. 이를 정확히 알아내기 위해서는 툴을 사용해야 합니다. 저번 글에서 Window Spy사용법을 말씀드렸는데, 이번에도 사용할 겁니다.



  저번 글에서 설명해 드렸듯, 오른쪽 하단 시스템 트레이에 H모양으로 생긴 아이콘에서 오른쪽버튼을 누르면 다음과 같은 메뉴가 뜹니다.



  여기서 Window Spy를 누르면..



 위와 같은 창이 뜨는데요. 맨 위에서 두번째 줄에 있는 것이 그 창의 제목입니다. 저는 지금 크롬에서 글을 쓰고 있기 때문에 저런 창이 잡힌거죠. 알아냈으면 이제 적용할 차례입니다.



2. 윈도우 제목을 알아내는 오토핫키 함수

WinGetActiveTitle, tmp1
  

  오토핫키의 장점은 함수가 사용이 간단하다는 겁니다. 위 함수를 실행시키면 tmp1에 현재 활성화된 윈도우창의 제목이 tmp1이라는 변수에 저장됩니다. 이제 이를 활용한 예제를 봅시다.



3. 활용예제

	
F12::
send, {ctrl down}{alt down}{f}{ctrl up}{alt up}
sleep, 100
send, {ctrl down}{alt down}{f}{ctrl up}{alt up}
sleep, 100
send, {left down}
sleep, 100
send, {left up}
sleep, 100
send, {ctrl down}{shift down}{left}{shift up}{ctrl up}
sleep, 100
send, {ctrl down}{shift down}{alt down}{[}{ctrl up}{alt up}{shift up}
sleep, 200
WinGetActiveTitle, tmp1
if (tmp1 = "Adobe InDesign") {
  send, {enter}
  sleep, 200
  send, {home}
  sleep, 100
  send, {shift down}{right}{shift up}
  sleep, 100
  send, {ctrl down}{c}{ctrl up}
  sleep, 100
  send, {alt down}{s}{alt up}
  sleep, 100
  send, {ctrl down}{v}{ctrl up}
  sleep, 100
  send, {enter}
}
return 
	

  중간에 위에서 알아본 함수를 썼습니다. tmp1이 "Adobe InDesign"일때만 작동하는 부분이 있는건데요, 이를 통해 자신이 원하는 창이 아니라면 매크로 실행을 방지할 수 있습니다. 위 코드는 어도비 인디자인에서 자동으로 주석번호에 색인을 넣는 코드입니다. 저 코드에서 창 제목만 바꾸시면 게임 등에서도 원하는 게임에서만 작동하는 코드를 작성하실 수 있을 겁니다.