오토핫키 AutoHotkey

오토핫키 (AHK)는 무료, 오픈소스 매크로 제작 소프트웨어 언어입니다. 반복적인 일의 자동화에 매우 특화되있구요. 초기 개발발향은 핫키라고도 부르는 키보드 단축키사용에 초점을 맞추었지만, 지금은 생각할 수 있는 컴퓨터언어의 모든것을 구현할 수 있는 단계까지 개발이 되었습니다.

 

'AHK 메뉴얼' 게시판에는 한 주제를 가지고 기능구현을 하는 방법을 서술할 것이고

'AHK 레퍼런스" 는 오토핫키의 명령어를 강의하는 게시판입니다!

 

오토핫키를 가볍게 배우신다면,
● 거의 모든것을 자동화 할수있습니다. 키보드입력과 마우스클릭과 같은
● 키보드와 마우스버튼 등에 기능을 추가해 컴퓨터 커스터마이징이 가능합니다.

● 단축말을 설정해 굳이 긴문장을 안써도 됩니다. 예) ㅎㅇ라 치면 자동으로 안녕하세요 변환

● 복사,붙여넣기의 컨트롤
● 소스코드파일을 하나의 exe 실행파일로 컴파일 할 수 있습니다. 모든 컴퓨터에서 사용이 가능하겠죠


컴퓨터 언어를 아시거나 깊이있게 오토핫키를 배우신다면,

● 그래픽 유저 인터페이스 (GUI) 를 만들어 사용자와 상호작용이 가능하고
● 텍스트파일을 포함한 엑셀파일 그리고 데이터베이스 파일을 읽고, 수정을 자동으로 하게 할 수 있습니다.
● 컴포넌트 오브젝트 모델 (COM) 을 사용할 수 있습니다.
● 배열 (Array)와 오브젝트 (Object) 사용이 가능합니다.
● 글로벌 변수 선언과 함수 제작 가능
● 윈도우 DLL 명령어를 호출해 다양한 기능 구현이 가능합니다

  1. BlogIcon 김경환 2015.02.18 15:08 신고

    화이팅!! 넘 멋져요!! 응원합니다 !! ^^

  2. EmP 2015.03.15 11:26 신고

    강좌 잘 보고 있읍니다. 감사합니다.

  3. 매크로 2015.03.24 23:25 신고

    키보드의 F4번이나 이런거는 펑션키라 오토핫키에서 입력으로 넣는거는 불가능한가요?

  4. 박팀 2015.05.03 18:59 신고

    감사합니다. 강좌 잘 보겠습니다.

 

델파이? 출처:위키백과

델파이는 마이크로소프트 윈도 기반하에서 모든 부분을 프로그래밍할 수 있는 강력한 언어이다.

●높은 생산성과 간결한 코드

●상/하위 호환성이 아주 뛰어나다

●C++과 비슷한 수준의 저수준(low level) 의 시스템 프로그래밍도 가능하다

●현존하는 네이티브 언어(native language) 중 가장 빠른 컴파일 속도

●뛰어난 객체지향 프레임워크인 비주얼 컴포넌트 라이브러리(VCL)를 사용

●멀티플랫폼 (윈도우↔맥↔IOS↔안드로이드)

 

다운로드

공식 홈페이지에서 Rad Studio XE7 내려받기

 

설치하기

요구 파일은 Rad Studio 가 자동으로 다운받아 설치합니다.

설치시 시간이 약간 걸리니 주의하세요.

 

'프로그래밍 > Delphi XE7' 카테고리의 다른 글

Delphi XE7 설치하기  (0) 2015.01.10

 

 

Sleep 명령어는 사용자가 지정한 시간만큼 기다리고 다음 명령어를 진행합니다.

 

Sleep, 밀리세컨드

 

1초 = 밀리세컨드 1000

ex) Sleep, 3000 = 3초 동안 슬립

 

예제 #1                                                              

F1::

MsgBox, 시작

Send, {A}

Sleep, 2000

Send, {B}

return

 

F1키를 누를시 시작 메시지박스가 출력되고,

A 키를 누른뒤 2초뒤에 B키를 누릅니다.

 

다시 말씀드리면 Send, A 는 Send, {A} 와 다릅니다

전자는 A를 입력하고 (문자 A)

후자는 키보드 A키 (한글 ㅁ)키를 누릅니다.

  1. 핫키 2016.03.09 00:57 신고

    실행을 해보면 A는 영어로 나오고 B는 한글 ㅠ로 나오는데 왜그런건가요?

핫키 HotKey

오토핫키라는 프로그램 이름에서 알수있듯이

오토핫키는 단축키 지정에 굉장히 특화되어 있습니다. 타 언어보다 훨씬 직관적으로요

(핫키,핫스트링 지정하는걸 Key Bind 라고 부릅니다. 헬프파일이나 외국포럼볼때 참고하세요)

 

아래 예제를 확인해볼까요! 왼쪽은 기본형, 오른쪽이 예제입니다.

 

핫키::                     F1::

명령어                    MsgBox, Hello

명령어                    MsgBox, World

return                    return

 

핫키를 선언하기위해서는 키 뒤로 :: 마크를 해줘야합니다.

위 예에서는 F1:: 으로 되어있으니, 'F1' 키가 핫키라는걸 명시해주는거겠죠

그 뒤에서부터 return 사이에 핫키를 눌렀을 때 실행하는 명령어들을 적으시면 됩니다.

return 은 해당 루틴을 종료한다는 말로 알아두시면 됩니다.

return을 적지않으시면 밑에 명령어까지 다 실행해요.

 

위 명령어를 실행해볼까요?

 

 

 

 

 

 

위 예는 핫키가 실행할 명령어가 두줄 (메시지박스 2개)이기 때문에

 

F1::

MsgBox, Hello

MsgBox, World

return

 

이런식으로 적었지만, 명렁어가 하나일 경우에는 아래와 같이 핫키선언후에 바로 이어주면 됩니다. return 도 필요없구요

 

F1:: MsgBox, Hello!

 

 

핫스트링 Hotstrings

핫키와 함께 핫스트링이라는 것이 있습니다. 

이는 핫키처럼 특정키가 아니라 문자열 등을 단축키로 설정할수 있고

줄임말을 입력할시 자동으로 긴문장으로 변환시킬수도있습니다.

 

예로 'ㅎㅇ' 라고 치면 자동으로 '안녕하세요' 로 바꿀수있습니다.

아래의 예를 확인하죠

문자열입력후, 스페이스바나 엔터같은 키를 눌러줘야 작동합니다

 

::문자열::바뀔문자열                    ::gd::안녕하세요

 

핫키도 그렇고 핫스트링 선언할때는 영어문자로 지정해야합니다.

'ㅎㅇ' 지만 키보드에서 ㅎ과 ㅇ의 위치 g와 d를 사용하세요.

 

ㅎㅇ누르고바로 바뀌시길 원하시면

 

:*:ㅎㅇ::안녕하세요

타이핑되면 바로바뀌게됩니다

그런데

ㅎㅇㅎㅇ

이렇게 치면 안바뀌죠 붙어있어서그렇습니다

그럴땐

:*?:ㅎㅇ::안녕하세요

:*!:ㅎㅇ::안녕하세요
이젠 붙어있어도 바로바로 바껴요

  1. 나그네 2015.04.27 14:31 신고

    오.... 깔끔한 설명 좋네요 ㅎㅎ

    근데 저는 scite4로 오토핫키를 짜는데 왜 저는 아무리해도 핫스트링이 안 먹힐까요..

    ::abc:: asdf1234@naver.com를 먼저 입력하고 다음 줄에서 abc를 누르고 스페이스나 엔터를 쳐도 반응이 없네요 -_-

    scite 최신버전으로 설치했는데(포터블X) 아....그것 때문에 답답해서 검색하다가 여기까지 오게됐는데 혹시 이유 아실까요?

    세팅값에서 뭘 만져줘야 하는 건지 ㄷㄷㄷ

    • BlogIcon 예지력 2015.04.28 11:42 신고

      F5(오토핫키 실행) 하신거 맞으시죠? 핫스트링도 오토핫키 파일 실행하셔야해요.
      Scite문제일 경우는 없을텐데, 핫키는 작동하는지 확인해보세요

  2. 나그네 2015.04.30 12:55 신고

    아오 ㅋㅋㅋ
    저장하고 실행해야된다는 걸 모르고 한참을 헤맸군요 -_-a
    지금 해보니 잘 되네요 그것도 모르고 며칠을 삽질했던 ㅜㅜ
    완전 답답했었는데 정말 고맙습니다~

  3. 갓예지력 2015.07.25 11:48 신고

    키가 눌린 상태로 스크립트 reload시에 눌린상태가 지속되기 때문에 다시 그 키를 눌러줘야 하는 번거러움이 있는데요.
    스크립트 실행을 그만둘시에 눌려있던키가 다 풀리게 할 수 있는 명령어나 방법이 없을까요?
    핫키가 한 스크립트내에서 중복지정이 안되기 때문에 한개를 더켜서 키 업버튼으로 대체하고 있습니다.
    !요약:crtl키가 눌린 상태로 reload시에 다시 crtl을 직접 누르거나 스크립트 하나를 더켜서 crtl up을 해주지 않는 이상 아무것도 할 수 없는데 방법이 없을까요?

    감사합니다

    • BlogIcon 예지력 2015.07.25 13:23 신고

      스크립트 최상단에
      Suspend, Off
      OnExit, Exit 추가하시고
      reload 부분을 아래처럼 수정해보세요,

      Exit:
      Suspend, On
      Reload

  4. 짱짱맨 2015.09.15 14:45 신고

    신기하네요 ㅋㅋ


.ahk 파일을 메모장으로 열어서 '유니코드' 또는 'UTF-8'로 저장해주지않으면 소스 작성시 한글이 꺠집니다.

그래서 외국포럼에서 소스코드를 받아 수정할때 저 번거로운 작업을 거쳐야했는데요.


스크립트 수정툴인 AHK Studio 으로 스크립트 수정시 한글이 깨져서 관련파일을 전부 유니코드로 바꿔야하는데..

파일수가 120 개정도 되더라구요 ;; 답이 없어서 한번에 인코딩 변환하는 툴을 제작해보았습니다.


드래그&드롭을 지원해서 스크립트파일을 드래그해서 박스에 드롭해도되고,

변환해야할 스크립트가 많다면 '파일 불러오기' 클릭후에 '전부변환' 누르시면 됩니다!




 

유니코드 변환기.zip

 

ahk.org 에 발전된 소스코드 올렸습니다.

 



소스코드


'프로그래밍 > Archive' 카테고리의 다른 글

Scrollable image list  (0) 2015.01.23
SetHoverText - Change control's text on mouseover  (0) 2015.01.23
PleasantNotify 미려한 팝업메시지  (0) 2015.01.22
오토핫키 (.ahk) 유니코드 인코딩 변환기!  (0) 2015.01.09
USkin.dll and .msstyles  (0) 2015.01.08
Official release  (0) 2014.12.28



USkin.dll



Milikymac.msstyles



skin.zip


'프로그래밍 > Archive' 카테고리의 다른 글

Scrollable image list  (0) 2015.01.23
SetHoverText - Change control's text on mouseover  (0) 2015.01.23
PleasantNotify 미려한 팝업메시지  (0) 2015.01.22
오토핫키 (.ahk) 유니코드 인코딩 변환기!  (0) 2015.01.09
USkin.dll and .msstyles  (0) 2015.01.08
Official release  (0) 2014.12.28

오토핫키의 Send 명령어는 키보드나 마우스 입력을 보냅니다.

Send 의 종류도 SendInput, SendPlay, 등으로 많습니다.

 

구조는 똑같지만 속도(사실 사람이 체감하진못하지만) 와 호환성 그리고 특수키 지원 등의 미세한 차이가 있습니다.

현재의 AutoHotkey L 버전 기준으로는 SendInput과 SendPlay 를 가장 많이 사용하는것 같네요.

 

이유는 기본 Send 와는 달리, 키입력중에 들어오는 다른 입력을 지연시키기 떄문입니다.

따라서, 실수로 키보드나 마우스를 클릭해도 명령어 수행에 아무런 영향을 받지 않습니다.

 

문자 입력 ㅡ Send, 문자

Send, A

→ A 문자 입력

 

키 입력 ㅡ Send, {키}

Send, {Enter}

→ 엔터키 입력

 

마우스 클릭 ㅡ SendInput, {Click, 횟수, x좌표, y좌표) , Click(X좌표, Y좌표)

SendInput, (Click, 3, 100, 200)

→ 화면 x좌표 100, y좌표 200 지점을 마우스 왼쪽 3번 클릭

SendInput, (Click, 2)

→ 현재 마우스 위치에서 왼쪽버튼 2번 클릭

Click

→ 현재 마우스커서가 있는곳, 마우스 왼쪽 클릭

키보드 입력과 마우스 입력하기

키입력은 'Send' 류의 명령어를 통해 윈도우 활성창(윈도우 최상단에 있는)으로 보내집니다.

다음의 예에서, 컨트롤 + 알트 + S는 '안녕하세요' 를 입력하는 핫키입니다.

 

기본형    Send, 입력할 문자

예시       ^!s::

Send, 안녕하세요, {Enter}

return

 

위 예에서 { } 표시를 하지 않은 문자는 문자입력으로 되고(Literally), {Enter} 는 엔터키를 의미합니다.

일반적으로 문자는 { } 표시없이 적고, 특수키 (엔터,스페이스바,방향키, F1, 등)은 {} 을 사용합니다.

 

그리고, 키입력은 단순히 핫키를 지정하여 보낼수있는것이 아니라 핫스트링을 사용하여 보내기가 가능합니다.

아래의 예는 사용자가 a b c 키를 순차적으로 눌렀을때, 입력된 'abc'를 'A and B and C' 로 변환합니다.

 

기본형    ::문자열::변환할 문자열

예시        ::abc:: A and B and C

 

마우스 클릭

: 마우스클릭을 하기 위해서는, 마우스클릭을 할 좌표(X좌표,Y좌표)를 적어줘야합니다. 오토핫키 설치폴더에 있는 'Window Spy' 를 이용해 마우스 좌표를 확인할 수 있습니다.

 

기본형    Click, X좌표, Y좌표

예시       Click, 400, 300

 

클릭하지 않고, 마우스 커서만 이동시키고 싶다면 'MouseMove' 명령어를

마우스를 드래그하려면 'MouseClickDrag" 를 사용하세요.

  1. EmP 2015.03.15 11:28 신고

    강좌 잘 보고 있읍니다. 감사 합니다.

  2. rechad hyun 2015.07.12 12:36 신고

    window spy 를 찾을수가 없습니다. 어디에서 찾아야 하는건가요...ㅠㅠ

C언어는 Printf("Hello World") 로,

오토잇은 MsgBox(0,'','Hello World') 로

 

그럼 오토핫키는 어떻게 할까요

아마 제 생각에는 오토핫키가 가장 간결하게 소스를 작성할 수 있는 언어에요

아래에서 소스를 확인해보죠

 

MsgBox, Hello World

 

C언어나 오토잇처럼 따옴표('',"") 처리 할 필요도 없고,

괄호처리를 할 필요도 없습니다.

 

위 소스대로 실행시키면 아래와 같은 메시지박스가 출력됩니다.

 

 

사실 단순히 Hello World 만 출력하기엔 아래 소스도 충분합니다.

 

MsgBox, 내용

 

하지만, 메시지박스의 아이콘표시나, 시간, Yes or No 와 같은거를 표현하기 위해 메시지박스의 옵션에 대해 알아보죠

 

메시지박스의 구조는

 

MsgBox , 옵션, 제목, 내용, 시간

 

으로 옵션이나 제목 등을 스킵하려면 , 로 넘겨주시면 됩니다.

예를 들어, MsgBox,,,Hello World 는 MsgBox, Hello World 하고 동일한 기능을 합니다.

 

옵션

메시지박스의 타입과, 버튼설정을 담당합니다. 기본값은 0 으로 위 사진과 같은 '확인' 버튼만 있습니다.

 

제목

메시지박스의 제목입니다. 생략할경우 스크립트파일명이 제목으로 표시됩니다.

 

내용

내용입니다. 줄바꿈은 `n 을 적고 이후에 글을 적으면됩니다. 예)Hello `n안녕하세요

 

시간

추가기능으로, 사용하지않을 경우에는 내용 적고 , 쓸필요없이 끝내면 됩니다.

메시지박스를 표시할 초를 입력합니다.

 

 

저렇게 일일이 적을수도 있지만,

오토핫키 에디터인 'Scite4AutoHotkey' 는 메시지박스 생성툴이 존재합니다.

 

 

 

버튼과, 아이콘, 시간 등을 설정할 수 있습니다.

 

 

'Test' 버튼을 클릭해 메시지박스가 옵션설정대로 잘 실행되는지 확인해볼 수 있구요.

 

완성된 메시지박스는 'Insert in SciTE' 를 클릭해 소스코드안에 포함할 수 있습니다!

  1. 혜나토리 2015.11.27 23:36 신고

    좋은설명감사합니다 ^^

  2. Rosantex 2017.04.14 09:08 신고

    이런게 있었다니! 좋은 정보 정말 감사드려요.

  3. 왕초보 2017.05.24 09:43 신고

    메세지를 편하게 설정할수 있는 방법이 있었네요..
    많은 초보분들이 알지 못하는 좋은 강좌 감사합니다...

프로그램, 또는 파일을 실행하기

'Run' 명령어는 프로그램,파일,URL, 그리고 바로가기를 실행하는데 사용됩니다.

아래의 예(Example)를 확인하죠

 

Run, Notepad

→ 메모장 실행

Run, www.google.com 

→ 구글로 이동

Run, C:\ProgramFiles\Test.ahk

→ C드라이브 > ProgramFiles 폴더안의 Test.ahk 파일 실행

 

위 예(Example) 에 핫키라벨 을 지정해줄 수 있습니다. 처음 명령어를 실행할 핫키는 'F1' 키로 지정했습니다.

 

F1:: Run, Notepad

 

위의  모든 예(Example)들은 싱글라인 핫키라고 합니다. 이유는 각각이 모두 한가지 명령어만 보유하고 있기 때문입니다.

한가지 이상의 명령어를 핫키에 의해 실행시키려면, 처음 명령어라인을 핫키지정라벨 다음줄에서부터 시작하고 마지막 라인을 'return' 으로 적으시면 됩니다. 예를 들어,

 

F1::

Run, Notepad

Run, www.google.com

return

 

프로그램, 또는 파일을 실행시키기 위해서는 경로를 적어주셔야 합니다.

 

Run, %A_ProgramFiles%\Tesk.ahk

 

위 예에서, %A_ProgramFiles% 는 오토핫키에 내장된 내장변수입니다. C:\Program Files 대신에 내장변수를 이용하면, 자신의 컴퓨터 뿐만 아니라 다른 컴퓨터에서도 사용이 가능하져 배포에 용이합니다. ※명령어와 변수는 대소문자 구분을 하지 않습니다. 예를 들어, 'Run'은 'run'과 같고, 'A_ProgramFiles' 은 'a_programfiles' 와 같습니다.

 

프로그램 시작하고, 종료를 기다리려면 , 'RunWait' 명령어를 사용하세요.

아래의 예에서 확인할 수 있듯이, 메세지박스 명령어는 메모장을 종료했을때 나타납니다.

 

RunWait, Notepad

MsgBox, 사용자가 메모장을 닫았습니다.

  1. EmP 2015.03.15 11:27 신고

    강좌 잘 보고 있읍니다. 감사합니다.

  2. 오토핫키 사랑 2015.07.09 20:45 신고

    정리를 너무 잘해서 잘 보고 갑니다. 훌룡하십니다. ^^

  3. 짱짱맨 2015.09.15 14:10 신고

    사이트도 잘만드시고 무엇보다 강좌가너무좋네요 감사합니다

  4. BlogIcon 딸기맛슉슉이 2015.11.30 17:04 신고

    잘보고 갑니다.

  5. 진짜 2015.12.31 15:59 신고

    지정 프로그램 종료는 어떻게 하는지요? 같은 단축키로요?

@ProgramVersion/2.6@

@Server/is/Online@

@Announce/수정할 필요가 없는데?@

@Update/http://knowledgeisfree.tistory.com/74@

'프로그래밍 > Archive' 카테고리의 다른 글

Scrollable image list  (0) 2015.01.23
SetHoverText - Change control's text on mouseover  (0) 2015.01.23
PleasantNotify 미려한 팝업메시지  (0) 2015.01.22
오토핫키 (.ahk) 유니코드 인코딩 변환기!  (0) 2015.01.09
USkin.dll and .msstyles  (0) 2015.01.08
Official release  (0) 2014.12.28

+ Recent posts