본문 바로가기
자동화

오토핫키로 GUI입력 매크로 만들기

by 도천수 2024. 1. 29.

업무를 하다 보면 같은 문장을 계속해서 입력해야 하는 경우가 많습니다. 저의 경우엔 특히 기능 검증을 위해 로그인을 할 때, 이메일 계정을 입력해야 하는데 하루에도 수십 번 같은 이메일을 입력해야 합니다.

반복되는 입력을 할 때면 너무 귀찮기도 하고 오타라도 친다면 다시 내용을 지워 반복+1을 해야 합니다.

꽤 예전부터 ‘안되겠다 매크로를 만들자.’ 라는 생각은 갖고 있었고 얼마 전에 원하는 문자열을 반복 입력하는 매크로를 오토핫키로 만들게 되었습니다.

요구사항 정리

매크로를 만들기 전 대략적인 요구 사항을 정리했습니다.

  • 1개 이상 최대 n개의 문자열을 저장하고 싶다.
  • 단축키를 이용해 저장한 문자열을 자동으로 입력하고 싶다.
  • 팀원들도 쉽게 사용할 수 있도록 GUI로 구현하자.

GUI 구현

오토핫키 스크립트는 GUI 인터페이스를 지원하고 있습니다. 보통 GUI 인터페이스를 스크립트로 구현하기 위해서는 컨트롤 개체와 위치, 크기, 타이틀 등을 직접 스크립트에 작성하여 추가해야 하지만, Smart GUI라는 툴은 그 또한 GUI에서 간단하게 만들 수 있도록 합니다.

Smart GUI를 실행하고 원하는 컨트롤을 선택, 배치, 크기 조절, 타이틀 작성 후 이것을 오토핫키 스크립트 형태로 저장할 수 있죠.

이것을 오토핫키 편집기(SciTE4AutoHotkey)에서 열어보면 위와 같은 모습으로 저장되어 있습니다. SmartGUI를 이용해 5개의 레이블, 5개의 입력 창, 5개의 저장 버튼을 배치한 모습과 그 스크립트 입니다.

Text(레이블)은 어떤 단축키를 입력해야 하는지 알려줍니다. 저의 경우엔 Alt+1~5를 사용하려고 합니다. Edit은 입력 창으로 저장할 문자열을 입력합니다. Button은 입력 창에 저장된 문자열을 변수로 가져오는 기능을 합니다.

컨트롤 속성 설정

Edit 컨트롤의 마지막 속성에 vEdit1~5라는 속성을 추가했습니다.

vEdit1~5는 v레이블이라 불리며 해당 속성으로써 Edit을 변수로 사용할 수 있게 됩니다. Edit에 작성된 문자열을 변수로 불러오게 되죠 v{레이블명} 형태로 작성하고, 저는 Edit1~5라는 레이블을 사용했습니다.

Button 컨트롤의 마지막 속성에 gButton1~5라는 속성을 추가했습니다. gSave1~5는 g레이블이라 불리며 해당 속성으로써 Button의 이벤트를 발생하게 됩니다. Button을 클릭했을 때 어떤 동작을 수행할 것인지 지정할 수 있습니다. g{레이블명} 형태로 작성하고, 저는 Button1~5라는 레이블을 사용했습니다.

Text 컨트롤의 마지막 속성에 Alt+1~5라는 속성을 추가했고, 이것은 해당 레이블에 입력할 내용을 작성합니다.

위의 코드를 실행하면 위와 같은 GUI 창이 출력 됩니다.

기능 구현

오토핫키의 장점은 매크로를 쉽고 빠르게 만들 수 있다는 것입니다. 오토핫키 답게 아주 쉽게 기능을 구현할 수 있습니다.

Copy
#예시
Save1:
Gui, Submit, NoHide
content1 = %Edit1%
return

!1::
SendRaw, %content1%
return

구문 설명

Save1: > 첫 번째 저장 버튼 클릭 시 아래 내용을 수행한다.
Gui, Submit, NoHide
> 확인 버튼 클릭 시 문자열을 인식하고 GUI창을 유지한다.
content1 = %Edit1%
> content1 변수에 첫 번째 Edit 컨트롤에 작성된 문자열을 저장한다.
return
> Save1 실행 종료
!1:: > alt+1 입력 시 아래 내용을 수행한다.
SendRaw, %content1%
> content1 변수에 저장된 문자열을 입력한다.
return
> alt+1 실행 종료

Gui, Submit 속성은 v레이블에 어떤 문자열인지 인식 하기 위해 사용합니다. 하지만 인식한 뒤 GUI 창을 숨기게 됩니다. 따라서 뒤에 오는 NoHide 속성을 붙여 GUI 창을 숨기지 않고 계속 유지하게 설정해야 합니다.

!1의 경우 alt+1이라는 의미인데, 즉 !가 alt를 뜻합니다. 오토핫키에서 단축키를 만들기 위해 키를 매핑할 때 사용되는 기능키는 특수 문자로 대체하여 지정하게 되는데 아래와 같이 사용할 수 있습니다.

Ctrl
^
Alt
!
Shift
+
Win
#

ex) Ctrl + 1 = ^1::

위의 코드를 Save1~Save5까지, !1~!5까지 반복하면 각 5개 컨트롤에 문자열을 저장하고 Alt+1~Alt5를 입력했을 때 저장된 문자열을 자동으로 입력해주는 매크로가 완성됩니다.

exe 파일로 변환

오토핫키를 설치한 경로에는 Ahk2Exe.exe라는 직관적인 이름의 실행 파일이 있습니다. 해당 파일은 오토핫키 스크립트를 윈도우 실행 파일인 exe파일로 변환해 주는 프로그램입니다.

이름처럼 사용법도 직관적입니다. [Main Parameters] Source에 exe파일로 변환하고 싶은 스크립트 파일을 첨부합니다. Destination에 exe파일을 저장할 위치를 설정합니다. 여기까지 하고 하단의 Convert를 클릭하면 exe파일로 변환됩니다.

[Options] 기본 오토핫키 아이콘을 사용한다면 스크립트 파일인지 exe 파일인지 헷갈리므로 저는 아이콘 파일을 만들어 exe파일에 지정해 주었습니다. Custom Icon에 .ico 파일을 추가하면 해당 파일이 exe파일의 아이콘이 됩니다.

 

완성

최대 5개의 문자열을 저장하고 Alt + 1 ~ 5 입력 시 저장한 문자열을 입력해주는 매크로가 완성되었습니다.

필요에 따라 손쉽게 더 많이 만들 수 있지만 아직 실무에서도 5개를 모두 사용한 경우는 없었습니다.

이것을 팀에 공유해 드렸으나 뒤늦게 안 사실이 있었습니다. 오토핫키는 맥OS에서 지원되지 않더군요..🥲

맥OS를 사용하시는 동료 분들을 위해 파이썬으로 비슷한 기능을 만들어 보고 있습니다. GUI와 단축키를 사용해 저장된 문자열을 입력하는 기능을 별개로 구현하는데 성공했지만 GUI에 입력된 문자열을 받아오는 방법은 아직 찾지 못해 매우 아쉽습니다..

업무의 불편함을 자동화로 대체하고 활용하는 것은 역시 업무의 질을 많이 향상시킨다고 느꼈습니다. 자동화 하는 과정 또한 아주 즐거웠고요. 다음엔 파이썬 언어로 이미지 인식 기반 자동화 스크립트를 만들어 보려고 합니다.

읽어주셔서 감사합니다!