[컴] AutoHotKey 사용

AHK / ahk / 오토 핫 키 사용 / 오토핫키 / auto hotkey 정리 / auto hot key /automation / 자동화 / 윈도우즈 / 자동화 툴 /

update, 2021-03-05

windows 에서 Power Automate Desktop 을 무료화 했다. 설치를 하고, Log in 을 해야 사용할 수 있다. 결과적으로 internet 에 연결이 안되어 있으면 사용이 안된다.

AutoHotKey 사용

AutoHot Key 에서 macro 는 .ahk 라는 extension 을 가진 text file 을 편집해서 만들면 된다.

Docs

AutoHotKey 의 manual 은 다음 경로에서 확인할 수 있다.

Syntax

Tutorial > 5 - Commands vs. Functions() 

Function 은 큰 제약이 없다. 우리가 흔히 다른 언어에서 쓰는 것처럼 사용하면 된다. 하지만 Command 는 조금 다르다. 다른 부분만 아래에 정리한다.

Command 의 제약
  1. 한줄에 Command 한개가 들어간다. 변수로 Command 를 넣는 것도 안된다.
  2. Command 에서 변수를 사용할 때는 %var% 처럼 % 로 둘러 싸야한다.

Assignment

':=', '='  2개 모두 할당을 나타낸다. ':=' 가 최근 문법이며, 다양한 표현이 가능하다. '=' 은 제약이 따르고, 직관적이지 않다. 그냥 ':=' 만 존재한다고 생각하자.

':=' 와 '=' 의 차이에 대해서는 다음을 참고하자.

Hot Key / Hot String

Hot Key 는 key 뒤에 '::' 를 적어주면 된다.

esc::
   MsgBox Escape!!!!
Return

; 이건 ctrl+k, a 이런식의 여러 character 를 입력받을 때 사용하면 된다.
^k::
   Input userKey, I L1 ; input 1-character
   Send %userKey%
Return

Hot String 은 key 앞과 뒤에 '::' 를 적어준다.

::btw::
   MsgBox You typed "btw".
Return

특별히 몇개의 key 는 다른 symbol 을 사용한다.(여기를 참고하자.)

  • # / Win (Windows logo key)
  • ! / Alt
  • ^ / Control
  • + / Shift
  • & / 2개 이상의 키를 동시에 누를 때 사용

특정 윈도우에서만 동작하도록 하려면

아래 문법을 사용할 수 있다.

  • #IfWinActive
  • #IfWinExist
#IfWinActive ahk_class Notepad
#IfWinActive

아래처럼 특정 window 를 실행할 수 있다.

; Retrieve the ID/HWND of the active window
id := WinExist("A")
MsgBox % id

; Press Win+↑ to maximize the active window
#Up::WinMaximize, A

; Activate a console window (e.g. cmd.exe)
WinActivate, ahk_class ConsoleWindowClass
WinActivate, ahk_id %VarContainingID%
WinActivate, ahk_pid %VarContainingPID%


; Define the group: Windows Explorer windows
GroupAdd, Explorer, ahk_class ExploreWClass ; Unused on Vista and later
GroupAdd, Explorer, ahk_class CabinetWClass

; Activate any window matching the above criteria
WinActivate, ahk_group Explorer

Spy++

hwnd 등을 알아내려면 spy++ 을 사용하면 된다. 대체로 Visual Studio 를 설치하면 같이 설치된다. Community 버전에도 들어있다. 경로는 아래와 같다.

  • c:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\spyxx.exe

그냥 아래의 WinSpy 를 이용해도 된다.

Keystrokes / Mouse clicks

key 를 누르거나, 마우스 클릭 같은 것은 Send* Command 를 이용하면 된다.

#SingleInstance

#SingleInstance force
#SingleInstance ignore
#SingleInstance off
  • force : 새롭게 실행되는 instance 로 replace 시킨다.
  • ignore : 기존의 것을 유지한다.
  • off : 여러개의 instance 를 띄운다.

예제

#SingleInstance ignore
#IfWinActive ahk_class Notepad
; First Macro
^d::
    Send +i
    Send `;
    Send ^v
    MsgBox "Test"
Return
; Second Macro
^e::
    ; + Shift
    ; ^ ctrl
    Send ^m
    Send {Tab}
    Send {Space}
    Loop, 7
    {
        Send {Tab}
    }
    Send {Space}
Return
#IfWinActive

위 예제는 Notepad 에서 ctrl + d 를 누르면, 다음처럼 3개의 키가 입력된다.

  1. shift + i
  2. ;
  3. ctrl+v

'`' 는 escape 문자이다.

그리고 마지막에 MsgBox 가 뜬다.

launchy 를 이용한 실행

.ahk file 의 바로가기를 만들어서 그 바로가기를 실행시켰을 때는 auto hot key 가 system tray 에는 떠 있지만, 동작을 하지는 않았다. 이유는 모르겠다.

바로가기로 실행하는 것에 문제는 없었다. 다만 launchy 를 통한 실행은 문제가 됐다. 이건 launchy 에서 실행하는 방법에 문제가 있는 것 같다.

See Also

  1. 쿠...sal: [컴] AutoHotkey 를 이용한 Always on 사용
  2. 쿠...sal: [컴] autohokey 예시들
  3. 쿠...sal: [컴] 맥의 원격데스크톱에서 한영키 사용하기 

댓글 없음:

댓글 쓰기