์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
1. ๊ฐœ์š”2. ํŠน์ง•3. ์žฅ์ 
3.1. ๋‚œ์ด๋„์™€ ์ ‘๊ทผ์„ฑ3.2. ์„ค์น˜์˜ ๊ฐ„ํŽธํ•จ
4. ๋‹จ์ 
4.1. ๋ณด์•ˆ4.2. ์ธ์‹4.3. ๊ธฐ๋Šฅ ์ œํ•œ
5. ๋ฒ„์ „6. ์—ฌ๋‹ด7. ๋„์›€๋ง ๋ฌธ์„œ8. ์ปค๋ฎค๋‹ˆํ‹ฐ

ํ™ˆํŽ˜์ด์ง€

1. ๊ฐœ์š”[ํŽธ์ง‘]

๋ฌด๋ฃŒ ์˜คํ”ˆ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์ด๋‹ค. ๊ธฐ๋ณธ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.[1]

์ด ํ”„๋กœ๊ทธ๋žจ์€ 2003๋…„ ๊ฒฝ์— ์ฒ˜์Œ ๊ณต๊ฐœ๋˜์—ˆ๋Š”๋ฐ, ์‚ฌ์‹ค ์ด๋ณด๋‹ค ์ด์ „์ธ 1999๋…„๊ฒฝ์— ๋‚˜์˜จ AutoIt์„ ๋งŒ๋“ค๋˜ ์ œ์ž‘์ž ๊ทธ๋ฃน ์ค‘ ํ•œ ๋ช…์ด AutoIt V2์—์„œ V3๋กœ ๋„˜์–ด๊ฐ€๋Š” ์‹œ์ ์—์„œ ์ปจ์…‰์— ๋Œ€ํ•œ ๊ฒฌํ•ด์ฐจ์ด๋กœ ๋”ฐ๋กœ ๋…์ž์ ์œผ๋กœ ๋งŒ๋“ค์–ด AutoIt ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๊ณต๊ฐœํ•˜๋ฉด์„œ ๋‚˜์˜จ ๋ฌผ๊ฑด์ด๋‹ค. AutoIt V2๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๋ฌธ๋ฒ•์„ ๊ทธ๋Œ€๋กœ ์ฐจ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ํ˜„์žฌ์˜ AutoIt V3๋Š” ์•„์˜ˆ ๋‹ค๋ฅธ ๋ฌธ๋ฒ•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์ฒ˜์Œ์—๋Š” AutoIt, AHK ๋ชจ๋‘ GPL ๋ผ์ด์„ผ์Šคํ•˜์— ์†Œ์Šค๋ฅผ ๊ณต๊ฐœํ–ˆ์œผ๋‚˜, AutoIt ์ธก์€ "๊ฒฝ์Ÿ์ž๊ฐ€ ์ง€์†์ ์œผ๋กœ ์šฐ๋ฆฌ์˜ ์†Œ์Šค๋ฅผ ๋ฒ ๋ผ๊ณ  ์žˆ๋‹ค" ๋ฉด์„œ ์†Œ์Šค ๋น„๊ณต๊ฐœ๋กœ ๋ฐ”๋€Œ์—ˆ๋‹ค.

2. ํŠน์ง•[ํŽธ์ง‘]

๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜ ์‚ฌ์ด์—” ์‰ผํ‘œ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค. [์˜ˆ์‹œ1]

์˜คํ† ํ•ซํ‚ค๋ผ๋Š” ์ด๋ฆ„์— ๊ฑธ๋งž๊ฒŒ ์šด์˜์ฒด์ œ ๋‹จ์ถ•ํ‚ค ์ง€์ •์— ํŠนํ™”๋˜์–ด ์žˆ๋‹ค. ์›ํ•˜๋Š” ๋Œ€๋กœ ํ‚ค๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  .exe ํŒŒ์ผ๋กœ ๋งŒ๋“ค๋ฉด, ํ•ด๋‹น ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๋กœ ์˜ฌ๋ผ๊ฐ„ ํ›„ ์‹คํ–‰์ด ๋œ๋‹ค. ์ด ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐœ๋ฐœ ๋ชฉ์  ์ค‘ ํ•˜๋‚˜๋„ ๋งคํฌ๋กœ์ด๋‹ค. [์ถœ์ฒ˜]

์‰ฝ๊ฒŒ ๋งŒ๋“ ๋‹ค๊ณ  ๋งŒ๋“  AutoIt ๋งŒ ํ•ด๋„ BASIC ์–ธ์–ด์˜ ํ˜•ํƒœ๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋น„ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์—๊ฒŒ๋Š” ๋ฐฐ์šฐ๊ธฐ ๋งค์šฐ ์–ด๋ ค์› ๋˜ ๋ฐ˜๋ฉด, AHK ๋Š” ์ง๊ด€์ ์ด๊ณ  ๊ผญ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ๋‹ด์•„ ๋…ผ๋ฆฌ์ ์ธ ์„ผ์Šค๋งŒ ์กฐ๊ธˆ ์žˆ๋‹ค๋ฉด ๋ˆ„๊ตฌ๋‚˜ ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฌผ๋ก  ๊ทธ ๋ฐ˜๋Œ€๊ธ‰๋ถ€๋กœ ๋ณต์žกํ•œ ๋งคํฌ๋กœ ์ž‘์—…์„ ์ž‘์„ฑํ•˜๊ธฐ์—” ๊ธฐ๋Šฅ์ด ๋ถ€์กฑํ•˜๊ฑฐ๋‚˜ ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•˜๊ฒŒ ๋˜๊ณ  ๊ฐ€๋…์„ฑ๋„ ๋–จ์–ด์ง€๊ฒŒ ๋œ๋‹ค. ๋ฌผ๋ก  ์ด๊ฑด ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์˜ ์ด์•ผ๊ธฐ์ด๊ณ , ๊ฐ„๋‹จํžˆ ๋งˆ์šฐ์Šค ํด๋ฆญ ๋ฐ˜๋ณต์ž‘์—…์ด๋‚˜ ํ•˜๊ณ ์ž ํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ์œ ์ €๋ผ๋ฉด ๋น„์ฃผ์–ผ ๋ฒ ์ด์ง๋ณด๋‹ค ์‰ฌ์šด AHK ๋Š” ์œ ์šฉํ•œ ํˆด์ด ๋œ๋‹ค.

ํ•œ ๋•Œ ์ด๊ฑธ๋กœ ์˜จ๋ผ์ธ ๊ฒŒ์ž„์˜ ์˜คํ†  ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ์‚ฌ๋žŒ๋„ ์žˆ์—ˆ์ง€๋งŒ ์ง€๊ธˆ์€ ๊ฒŒ์ž„๊ฐ€๋“œ ๋“ฑ์— ๋ง‰ํ˜€์„œ ์ž‘๋™์ด ์•ˆ๋œ๋‹ค. ๋ฌผ๋ก  ๊ฒŒ์ž„๊ฐ€๋“œ๊ฐ€ ์—†๋Š” ์™ธ์‚ฐ ํ”„๋กœ๊ทธ๋žจ, ์˜ˆ๋ฅผ ๋“ค์ž๋ฉด ๋””์•„๋ธ”๋กœ3 ๊ฐ™์€ ๋ฐ์—์„  ๋ฌด๊ธฐ๋“ค์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ตํ™˜ํ•˜๋Š”๋ฐ ๋งค์šฐ ์• ์šฉ๋˜๊ณ  ์žˆ๋‹ค.

AHK ๋ฅผ EXE ๋“ฑ์˜ ์‹คํ–‰ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผํ•˜๋Š” ์˜ต์…˜๋„ ์žˆ๋Š”๋ฐ ๋ฐ”์ด๋Ÿฌ์Šค๋กœ ํŒ์ •๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

stdout := FileOpen("*", "w `n")
stdout.Write(msg)
stdout.Read(0)
sleep 5000

๋˜๋Š”

FileAppend,Test Message`n,*

์œผ๋กœ ๊ตฌ๋ฌธ์„ ์ €์žฅํ•˜๊ณ 

For /F "tokens=*" %L in ('""%ProgramFiles%\AutoHotkey\AutoHotkey.exe" "My Script .ahk""') do @Echo %L

ํ˜•์‹์œผ๋กœ ์‹คํ–‰ํ•˜๋ฉด DOS์ฐฝ์— ์ถœ๋ ฅ์ด ๊ฐ€๋Šฅ์€ ํ•˜๋‹ค.

3. ์žฅ์ [ํŽธ์ง‘]

3.1. ๋‚œ์ด๋„์™€ ์ ‘๊ทผ์„ฑ[ํŽธ์ง‘]

์‰ฝ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๋ช…๋ น์€ ์˜์–ด๋งŒ ํ•  ์ค„ ์•ˆ๋‹ค๋ฉด ๋ฐ”๋กœ ์ด๊ฒŒ ๋ฌด์Šจ ์—ญํ• ์„ ํ•˜๋Š”์ง€ ์•Œ์•„๋ณผ์ˆ˜ ์žˆ๋‹ค. C์–ธ์–ด์—์„ 
#include <stdio.h>
int main(void)
{
     printf("Hello world!");
     return 0;
}

์ฒ˜๋Ÿผ ์ฝ”๋”ฉ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด, ์˜คํ† ํ•ซํ‚ค์—์„ 

Msgbox, Hello world!

๋ผ๊ณ  ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋น„์ „๋ฌธ๊ฐ€๊ฐ€ ๋ณผ๋•Œ ํ›จ์”ฌ ๊ฐ„๊ฒฐํ•˜๊ณ  Msgbox๋ฅผ "๋ฉ”์‹œ์ง€ ๋ฐ•์Šค"๋ผ๊ณ  ์ง๊ด€์ ์œผ๋กœ ์•Œ์•„๋“ฃ๋Š”๋‹ค.

๋˜ํ•œ, ์ฒ˜๋ฆฌ ์ˆœ์„œ์— ๋Œ€ํ•ด์„œ๋„ ๋น„์ „๋ฌธ๊ฐ€๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค. ๊ทธ๋ƒฅ ์œ„์—์„œ ์•„๋ž˜๋กœ ๊ตด๋Ÿฌ๊ฐ€๋‹ˆ๊นŒ. C์˜ ๊ฒฝ์šฐ ํ•จ์ˆ˜๋ฅผ ๋”ฐ๋ผ ์ด๋™ํ•˜์ง€๋งŒ, ์˜คํ† ํ•ซํ‚ค๋Š” ๊ทธ๋Ÿฐ๊ฑฐ ์—†๋‹ค.
C์—์„œ๋Š” ์ˆ˜ ์ค„์— ๊ฑธ์ณ์„œ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ๋žœ๋ค ํ•จ์ˆ˜๋Š”, ์˜คํ† ํ•ซํ‚ค์—์„  ํ•œ ์ค„๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•˜๋‹ค.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
     srand((unsigned int)time(NULL));
     int var = rand()%100+1; //(1๋ถ€ํ„ฐ 100์‚ฌ์ด์˜ ๋‚œ์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜์—ฌ var์— ์ €์žฅํ•œ๋‹ค)
     return 0;
}



Random, var, 1, 100 ;(1๋ถ€ํ„ฐ 100์‚ฌ์ด์˜ ๋‚œ์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜์—ฌ var์— ์ €์žฅํ•œ๋‹ค)

3.2. ์„ค์น˜์˜ ๊ฐ„ํŽธํ•จ[ํŽธ์ง‘]

์˜คํ† ํ•ซํ‚ค์˜ ์„ค์น˜๋Š” ๋ฌด๋ ค 10์ดˆ ์ด๋‚ด. ์šฉ๋Ÿ‰์€ 2MB์ฆˆ์Œ์ด๋ฉฐ, ๋ถ€๋‹ด์—†์ด ๋น ๋ฅด๊ฒŒ PC์— ์„ค์น˜ํ•ด์„œ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

4. ๋‹จ์ [ํŽธ์ง‘]

4.1. ๋ณด์•ˆ[ํŽธ์ง‘]

๋ชจ๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ๋น„์Šทํ•˜์ง€๋งŒ, ์˜คํ† ํ•ซํ‚ค๋Š” ํŠนํžˆ ์‹ฌํ•˜๋‹ค. L๋ฒ„์ „ ์˜คํ† ํ•ซํ‚ค๋ฅผ ์“ด๋‹ค๋ฉด exeํŒŒ์ผ์— ์—ด๊ธฐ(O)โ†’๋ฉ”๋ชจ์žฅ์„ ์„ ํƒ์‹œ ํ•˜๋‹จ๋ถ€์— ์†Œ์Šค๊ฐ€ ์ ๋‚˜๋ผํ•˜๊ฒŒ ๋ณด์ธ๋‹ค. ์ด์™ธ์˜ ๋ฒ„์ „์—์„œ๋Š” ๋””์ปดํŒŒ์ผ๋Ÿฌ ํ˜น์€ ์˜ฌ๋ฆฌ๋””๋ฒ„๊ฑฐ๋ฅผ ์ด์šฉํ•ด ๋ˆ„๊ตฌ๋‚˜ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๋šซ์„ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ์ด๋ฅผ ๋ง‰๋Š” ํŒจํ‚น ๋ฐ ๋‚œ๋…ํ™”๋ผ๋Š” ์ž‘์—…์ด ํ™œ์„ฑํ™” ๋˜๊ณ , ์˜คํ•ซ๋„ ์Šฌ์Šฌ ์•ˆ์ „์ง€๋Œ€์— ๋“ค์–ด๊ฐ€๋Š” ๋“ฏ ํ–ˆ์œผ๋‚˜.. ๊ทธ๋Ÿฐ๊ฑฐ ์—†๋‹ค. ์ด๋งˆ์ €๋„ ๋ฆฌ๋ฒ„์‹ฑ ๊ณ ์ˆ˜์—๊ฒŒ๋Š” ํ†ตํ•˜์ง€ ์•Š๋‹ค. ๋‹ค๋งŒ ์˜คํ† ํ•ซํ‚ค๋Š” GPL ๋ผ์ด์„ผ์Šค ํ•˜์— ๋ฐฐํฌ๋˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ, AHK2EXE๋ฅผ ์ด์šฉํ•ด ์ปดํŒŒ์ผ๋œ ์˜คํ† ํ•ซํ‚ค ์Šคํฌ๋ฆฝํŠธ๋Š” (์ปดํŒŒ์ผ ๊ณผ์ •์—์„œ ์˜คํ† ํ•ซํ‚ค ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ํ†ตํ•ฉ๋˜๋ฏ€๋กœ) ์ž๋™์ ์œผ๋กœ GPL ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด์„ผ์Šค๊ฐ€ ์ „์—ผ๋˜์–ด ์˜คํ”ˆ์†Œ์Šค๋กœ ๊ณต๊ฐœ๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ฃผ์žฅ์ด ์žˆ๋‹ค.

๊ทธ๋ ‡์ง€๋งŒ GPL ๋ผ์ด์„ ์Šค์˜ ์ œํ’ˆ์ด ์ง์ ‘ ํฌํ•จ๋˜์ง€ ์•Š์€ ์‚ฐ์ถœ๋ฌผ์€ GPL์ด ์•„๋‹ˆ์–ด๋„ ๋œ๋‹ค! ์‹ค์ œ๋กœ, GPL ๋ผ์ด์„ ์Šค ์ปดํŒŒ์ผ๋Ÿฌ์ธ GCC๋กœ ์‚ฐ์ถœ๋œ ํ”„๋กœ๊ทธ๋žจ์€ GPL๊ณผ ๋ณ„๊ฐœ์ด๋‹ค. ์˜คํ† ํ•ซํ‚ค์—์„œ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌํ™”๊ฐ€ ๋œ๋‹ค๋ฉด ํ•˜๋‚˜์˜ ์‹คํ–‰ ํŒŒ์ผ์— ๋ฌถ์ด๊ฒŒ ๋˜๋ฉฐ, ์ด๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๊ฐ™์€ ํ˜•ํƒœ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ(๊ทธ๋ฆฌ๊ณ  ๋ถ„๋ฆฌ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํƒœ์ด๋ฏ€๋กœ) ์‚ฐ์ถœ๋œ ํ”„๋กœ๊ทธ๋žจ์—๋Š” GPL์ด ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค. ๋˜ํ•œ, ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์—์„œ์˜ ์ปดํŒŒ์ผ์€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์™€ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ•˜๋‚˜์˜ exe๋กœ ๋ฌถ์ด๋Š” ๊ฐœ๋…์œผ๋กœ ์„ค๋ช…๋˜๊ณค ํ•˜๋Š”๋ฐ, ์ด ๊ฒฝ์šฐ ๋˜ํ•œ ์ž์œ  ์†Œํ”„ํŠธ์›จ์–ด ์žฌ๋‹จ์˜ FAQ์—์„œ GPL ์ „์—ผ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋ฐํ˜”๋‹ค. ํ•œ๊ตญ์–ด ๋ฒˆ์—ญ

๋˜ํ•œ, ์˜คํ† ํ•ซํ‚ค(1.0)์˜ ์ œ์ž‘์ž Chris Mallett๋„ ์ปดํŒŒ์ผ๋œ exe(์‚ฐ์ถœ๋ฌผ)์€ GPL์ „์—ผ์ด ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋งํ•œ ๋ฐ” ์žˆ๋‹ค[4]. ์ฆ‰, GPL ๋ผ์ด์„ ์Šค์˜ ๋ฒ”์œ„๋Š” ์˜คํ† ํ•ซํ‚ค(์ธํ„ฐํ”„๋ฆฌํ„ฐ)์˜ ์†Œ์Šค ์ฝ”๋“œ(C++)์™€ ๊ทธ๋กœ ์ธํ•ด ๋‚˜์˜จ ์‚ฐ์ถœ๋ฌผ(์˜คํ† ํ•ซํ‚ค ์ธํ„ฐํ”„๋ฆฌํ„ฐ, AutoHotkey.exe)์˜ ๊ฒฝ์šฐ์ด๋ฉฐ, ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์™€ ๋ฌถ์—ฌ ์ปดํŒŒ์ผ๋œ ํ”„๋กœ๊ทธ๋žจ์€ GPL C++ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•œ ๋นŒ๋“œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ GPL์ด ์•„๋‹ˆ์–ด๋„ ์ข‹๋‹ค๋Š” ๋œป์ด๋‹ค.

4.2. ์ธ์‹[ํŽธ์ง‘]

๋ฌธ๋ฒ•์˜ ๋‚œ์ด๋„๊ฐ€ ๋งค์šฐ ๋‚ฎ์•„ ๋ˆ„๊ตฌ๋‚˜ ์‰ฝ๊ฒŒ ์ฝ”๋”ฉ์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์ผ๋ถ€ ๋ชฐ์ƒ์‹ํ•œ ์‚ฌ์šฉ์ž๋“ค์— ์˜ํ•ด ์ œ์ž‘๋œ ๊ฒŒ์ž„ ํ•ต ํ˜•ํƒœ์˜ ๋งคํฌ๋กœ๊ฐ€ ๋Œ์•„๋‹ค๋‹ˆ๋Š” ๊ฒƒ์„ ์‰ฝ๊ฒŒ ๋ชฉ๊ฒฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํˆดํ‚ค๋””๋“ค์˜ ์ „์œ ๋ฌผ์ด๋ผ๋Š” ์ธ์‹์ด ๊ฝค ํผ์ ธ์žˆ๋Š” ํŽธ์ด๋‹ค.

ํ•œํŽธ ์ƒ์ˆ ํ•œ ์‚ฌ์šฉ์ฒ˜์˜ ๋ฌธ์ œ ๋•Œ๋ฌธ์— ์ผ๋ถ€ ๋ฐฑ์‹ ์—์„  ์˜คํ† ํ•ซํ‚ค๋ฅผ ๋ฐ”์ด๋Ÿฌ์Šค๋กœ์จ ์žก์•„๋‚ด๊ธฐ๋„ ํ•œ๋‹ค. ํ–‰์œ„ ๊ธฐ๋ฐ˜์œผ๋กœ ์žกํžˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ 90%์ธ๋ฐ, ์–ด๋ฒ ์ŠคํŠธ๋‚˜ ๋งฅ์•„ํ”ผ๊ฐ™์€ ์œ ๋ช…ํ•œ ๋ฐฑ์‹ ๋“ค์—๊ฒŒ๋„ ๊ฐ€๋”๊ฐ€๋‹ค ๊ฑธ๋ฆฌ๋‹ˆ ์ฃผ์˜์š”๋ง. ๋ฐ”์ด๋Ÿฌ์Šค ํ† ํƒˆ์— ๊ฒ€์‚ฌ๋ฅผ ํ•ด๋ณด๋ฉด ๋ฉ€์ฉกํ•œ ์˜คํ† ํ•ซํ‚ค ํŒŒ์ผ์ด๋ผ๋„ ์ ๊ฒŒ๋Š” ๋‘์„ธ๊ฐœ๋ถ€ํ„ฐ ๋งŽ๊ฒŒ๋Š” 10๊ฐœ์ด์ƒ์˜ ๋ฐฑ์‹ ์ด ๊ฐ์ง€ํ•˜๋Š” ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

4.3. ๊ธฐ๋Šฅ ์ œํ•œ[ํŽธ์ง‘]

๋ฌธ๋ฒ•์„ ๋” ์‰ฝ๊ณ , ๋” ์‰ฝ๊ณ , ๋˜ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐ”๋žŒ์— ์ž์œ ๋„๊ฐ€ ๋‚ฎ๋‹ค. ๋ผ์ดํŠธํ•˜๊ฒŒ ์ฝ”๋”ฉํ•˜๋Š” ์˜คํ† ํ•ซํ‚ค ์œ ์ €์—๊ฒ ์ƒ๊ด€ ์—†์ง€๋งŒ, ์˜ค๋ฆฌ์ง€๋„ B๋ฒ„์ „์€ global ๋ช…๋ น๋„ ์—†์œผ๋ฉฐ[5] ์•ฝ๊ฐ„ ๊ฐœ์„ ๋œ L๋ฒ„์ „๋„ Python๊ฐ™์€ ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์— ๋น„ํ•ด์„  ํ™•์‹คํžˆ ๋–จ์–ด์ง„๋‹ค.

5. ๋ฒ„์ „[ํŽธ์ง‘]

  • B: ์ตœ์ดˆ ๊ฐœ๋ฐœ ๋ฒ„์ „
  • L: Lexikos๊ฐ€ ๋งŒ๋“  ์ƒˆ๋กœ์šด ๋ฒ„์ „
  • H: ์œ ์ €๋“ค์ด ๋งˆ๊ฐœ์กฐ์‹œํ‚จ ๋ฒ„์ „ [6]

6. ์—ฌ๋‹ด[ํŽธ์ง‘]

  • ๊ตญ๋‚ด์—” ๊ด€๋ จ ์„œ์ ์ด ์—†์œผ๋ฉฐ, ํ•ด์™ธ์—๋Š” ์žˆ๋‹ค. ๋‹ค๋งŒ, ์ƒ๋‹นํžˆ ์˜›๋‚ ์— ์ง€์–ด์ง„ ์ฑ…์ด๋ฏ€๋กœ ์„ค๋ น ์˜์–ด๊ฐ€ ๋œ๋‹ค ํ•˜๋”๋ผ๋„ ๊ณ ์ˆ˜๋“ค ๋ชจ๋‘๊ฐ€ ์ถ”์ฒœํ•˜์ง€ ์•Š๋Š” ์ฑ…. ์™ธ๊ตญ ์˜คํ† ํ•ซํ‚ค ํฌ๋Ÿผ๊ณผ ๊ตญ๋‚ด ์˜คํ† ํ•ซํ‚ค ๊ด€๋ จ ์‚ฌ์ดํŠธ, ๋ธ”๋กœ๊ทธ์— ์ •๋ฆฌ๊ฐ€ ์ž˜ ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ธํ„ฐ๋„ท์—์„œ ๋ฐฐ์šฐ๋Š” ๊ฒƒ๋„ ์ข‹๋‹ค.
  • ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋งคํฌ๋กœ ์ œ์ž‘ ๋„๊ตฌ๋ผ๊ณ  ์•Œ๊ณ ์žˆ์ง€๋งŒ, ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์— Script Language๋ผ๊ณ  ์ง์ ‘์ ์œผ๋กœ ์ ์–ด๋†“์•˜์œผ๋ฏ€๋กœ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋ผ๊ณ  ๋ด์•ผํ•œ๋‹ค.
  • ์ธํ„ฐ๋„ท ๊ฐ•์ขŒ๋ฅผ ๊ณ ๋ฅผ ๋•Œ์—๋Š” ๋งคํฌ๋กœ๋ฅผ ์œ„์ฃผ๋กœ ๊ฐ€๋ฅด์น˜๋Š” ๊ฐ•์ขŒ๋ฅผ ํ”ผํ•ด์•ผํ•œ๋‹ค. ๋งคํฌ๋กœ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๊ณ  ๋งคํฌ๋กœ๋ถ€ํ„ฐ ๋งŒ๋“œ๋Š”๊ฒŒ ์•„๋‹ˆ๋‹ค. ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์Œ“์•„๊ฐ€์•ผ์ง€ ์ œ์ž‘๊ธฐ๊ฐ„๋„ ์งง๊ณ , ์‹ค์ œ๋กœ ์ œ์ž‘์ด ์ˆ˜์›”ํ•˜๋‹ค. ๋งŒ์•ฝ ๋งคํฌ๋กœ ๋จผ์ € ๋ฐฐ์šฐ๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค๋ฉด ๋๋„์—†์ด ๋ฐ€๋ ค์˜ค๋Š” ์˜ค๋ฅ˜์˜ ๋ฐ”๋‹ค์—์„œ ํ—ค์–ด๋‚˜์˜ค์ง€ ๋ชปํ•  ๋ฟ๋”๋Ÿฌ, ์˜คํžˆ๋ ค ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•˜๋А๋ผ ์ œ์ž‘๊ธฐ๊ฐ„๋„ ์˜ค๋ž˜๊ฑธ๋ฆฐ๋‹ค. ๋ณ€์ˆ˜๋‚˜ ์—ฐ์‚ฐ์ž์˜ ๊ฐœ๋…์„ ๋นจ๋ฆฌ, ๋งˆ์šฐ์Šค ํด๋ฆญ์ด๋‚˜ ํ‚ค๋ณด๋“œ ์ž…๋ ฅ ๊ฐœ๋…์„ ๋Šฆ๊ฒŒ ์•Œ๋ ค์ฃผ๋Š” ๊ฐ•์ขŒ๋ฅผ ์ฐพ๋Š” ๊ฒƒ๋„ ํ•˜๋‚˜์˜ ํŒ. ๋‹จ, ์ด๋ฏธ ๋‹ค๋ฅธ ์–ธ์–ด๋“ค์„ ๋‹ค๋ฃจ์–ด ๋ณด์•˜๋‹ค๋ฉด ๊ฐ•์ขŒ๋ฅผ ๋ณผ ํ•„์š”๋„ ์—†์ด ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€ ๋„์›€๋ง์„ ๊ตฌ๊ธ€ ๋ฒˆ์—ญ๊ธฐ ๋Œ๋ ค๋ณด๋Š”๊ฒŒ ๋” ๋น ๋ฅด๋‹ค.[7]
  • ์–ธ์–ด์™€ ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ๋ชจ๋‘ ๊ณต์œ ๋˜๊ณ  ์žˆ๋‹ค. AHK๋ฅผ ์ž…๋ง›์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•ด์„œ ์จ๋„ ๋œ๋‹ค๋Š” ๋œป. ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์ˆ˜์ •ํ•ด์„œ ์†Œ์Šค ๋ณดํ˜ธ๋ฅผ ์œ„ํ•ด ๋‚œ๋…ํ™”๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.
  • ์–ธ์–ด์˜ ํŠน์„ฑ์ƒ ํƒ€ ์–ธ์–ด์— ๋น„ํ•ด ์†๋„ ๋ฉด์—์„œ ๋–จ์–ด์ง„๋‹ค. ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด์ผ ๋ฟ๋”๋Ÿฌ GUI ๊ธฐ๋ฐ˜ ์–ธ์–ด๋ผ์„œ ์–ด์ฉ” ์ˆ˜ ์—†๋Š” ๋ถ€๋ถ„. ๋งŒ์•ฝ ์ž๊ธฐ ํ”„๋กœ๊ทธ๋žจ์ด ์†๋„๋ฅผ ๊ทนํ•œ์œผ๋กœ ๋ฝ‘์•„๋‚ด์•ผ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๋ฉด ๋‹ค๋ฅธ ์–ธ์–ด๋ฅผ ๋ฐฐ์šฐ๋Š”๊ฒŒ ์ข‹๋‹ค. ์ฐธ๊ณ 
  • ๊ตญ๋‚ด์—์„œ ์ธ์‹์ด ์ข‹์ง€ ๋ชปํ•˜๋‹ค. ์ƒ๊ธฐ ์„œ์ˆ ํ–ˆ๋“ฏ์ด ๋งคํฌ๋กœ, ํ•ต ์ œ์ž‘ ๋ฌธ์ œ๋กœ ์ธํ•ด์„œ ์–ธ์–ด๋กœ ์ทจ๊ธ‰์„ ์•ˆํ•ด์ฃผ๋Š” ํŽธ. ๊ทธ๋ž˜์„œ ๋Œ€๋ถ€๋ถ„์˜ ์˜คํ† ํ•ซํ‚ค ๊ฐœ๋ฐœ์ž๋“ค์€ ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ์ „ํ–ฅ์„ ํ•˜๊ธฐ ๋งˆ๋ จ์ด๋‹ค. ๋‹ค๋งŒ, ์ด ๊ฒฝ์šฐ์— ๋˜ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด '๋„ˆ๋ฌด ์ˆด์› ๋˜ ์˜คํ† ํ•ซํ‚ค ๋ฌธ๋ฒ•'์— ์ ์‘ํ•ด๋ฒ„๋ฆฐ ๋‚˜๋จธ์ง€ ๋‹ค๋ฅธ ๋นก๋นกํ•œ ์–ธ์–ด๋Š” ๋ฐฐ์šฐ๊ธฐ ํž˜๋“ค์–ด์ง„๋‹ค. ์‹ค์ œ๋กœ AHK โ†’ C์–ธ์–ด ์ˆœ์œผ๋กœ ๋ฐฐ์šด ์‚ฌ๋žŒ์ด ์•„์˜ˆ C์–ธ์–ด๋ฅผ ์ฒ˜์Œ ๋ฐฐ์šฐ๋Š” ์‚ฌ๋žŒ๋ณด๋‹ค ์„ธ๋ฏธ์ฝœ๋ก , ๋น„๊ต ์—ฐ์‚ฐ์ž ์‹ค์ˆ˜๋ฅผ ๋งŽ์ดํ•œ๋‹ค.
  • ๋‚œ์ด๋„๊ฐ€ ์‰ฝ๋‹ค์ง€๋งŒ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ๋‹ค๋ฅธ ์ ์ด ๋งŽ๋‹ค๋ณด๋‹ˆ ๋‚œํ•ดํ•œ์ ๋„ ๋งŽ๋‹ค. := ์ต์Šคํ”„๋ ˆ์…˜ ๊ณผ = ๋ฆฌํ„ฐ๋Ÿด์˜ ์ฐจ์ด๋งŒ ๋ด๋„ ๊ทธ๋ ‡๊ณ  ๋‚ด์žฅ๋œ ๋ช…๋ น๊ณผ ์‚ฌ์šฉ์ž ํ•จ์ˆ˜์˜ ํ‘œํ˜„ ์ฐจ์ด๋„ ๋‚œ๋‹ค.[8] ๊ทธ๋ž˜์„œ v2 ๋ฒ„์ „์—์„  ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ๋ฒ„๋ฆฌ๊ณ  ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•  ๊ณ„ํš์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • ๋™๋ช…์˜ ์ƒ์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ๋‹ค. ๋‹ค๋งŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด AutoHotkey๋Š” ํ›จ์”ฌ ๋จผ์ €์ธ 2003๋…„์— ๊ณต๊ฐœ๋˜์—ˆ๋‹ค. ๋„ค์ด๋ฒ„์—์„  ์ƒ์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์˜ ๊ฒ€์ƒ‰์ˆœ์œ„๊ฐ€ ๋†’์•„์„œ ์ •์ž‘ ์–ธ์–ด ์˜คํ† ํ•ซํ‚ค์˜ ๊ฒ€์ƒ‰์€ ์›ํ™œํ•˜๊ฒŒ ๋˜์ง€ ์•Š๋Š”๋‹ค. ๊ตฌ๊ธ€์„ ํ†ตํ•ด ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœ.
  • ์Šคํฌ๋ฆฝํŠธ ๋Œ€์‹  ๊ฐ„๋‹จํ•œ GUI๋กœ ์ข€ ๋” ์‰ฝ๊ฒŒ ๋‹จ์ถ•ํ‚ค๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ๋„ ์žˆ๋‹ค. ์ด๋ฆ„์€ WindowexeReSendKey. ๋‹ค๋งŒ ์•„๋ฌด๋ž˜๋„ AutoHotkey์— ๋น„ํ•˜๋ฉด ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์˜ ๋ฒ”์œ„๊ฐ€ ์ข€ ์ข๋‹ค.

7. ๋„์›€๋ง ๋ฌธ์„œ[ํŽธ์ง‘]

8. ์ปค๋ฎค๋‹ˆํ‹ฐ[ํŽธ์ง‘]

  • AutoHotKey๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค: ์˜คํ† ํ•ซํ‚ค ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€ ์ตœํ•˜๋‹จ์— ์•ˆ๋‚ด๋˜์–ด์žˆ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์ด๋‹ค. ์‚ฌ์„ค ์ปค๋ฎค๋‹ˆํ‹ฐ์ด์ง€๋งŒ, ๊ณต์‹์ ์œผ๋กœ ์ธ์ •๋œ ์ผ€์ด์Šค. ์‹ ๊ทœ ํšŒ์›๊ฐ€์ž…์€ ๋˜์ง€ ์•Š๋Š” ์ƒํƒœ์ด๋‹ค.
  • ๋ฐฉ๊ฐœ ์ŠคํŽ˜์ด์Šค: ์‹ ์ƒ ์˜คํ† ํ•ซํ‚ค ์ปค๋ฎค๋‹ˆํ‹ฐ. ํšŒ์›์ด ์งˆ๋ฌธํ•˜๋ฉด ์šด์˜์ž๊ฐ€ ์ง์ ‘ ๋‹ต๊ธ€์„ ๋‹ฌ์•„์ค€๋‹ค. ์šด์˜์ž๊ฐ€ ์˜คํ† ํ•ซํ‚ค ๊ฐ•์˜๋ฅผ ์˜ฌ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๊ฐ•์˜์— ๋Œ€ํ•œ ์งˆ๋ฌธ๊ธ€๋„ ์˜ฌ๋ผ์˜ค๋Š” ํŽธ. ํ•˜๋‹จ์˜ ์˜คํ† ํ•ซํ‚ค ์—ฐ๊ตฌ์†Œ์™€ ๋‹ค๋ฅด๊ฒŒ, ๊ฒŒ์ž„ ๊ด€๋ จ ๊ธ€์ด ์ „ํ˜€ ์—†๋Š” ๊ฒƒ๋„ ํŠน์ง•. ๊ฒŒ์ž„๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ์˜คํ† ํ•ซํ‚ค ์–ธ์–ด๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์— ์ข‹์€ ์ปค๋ฎค๋‹ˆํ‹ฐ์ด๋‹ค.
  • ์˜คํ† ํ•ซํ‚ค ์—ฐ๊ตฌ์†Œ: ๋„ค์ด๋ฒ„ ์นดํŽ˜ ํ˜•์‹์œผ๋กœ, ์œ„ ๋‘ ๊ฐœ์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ณด๋‹ค ํ™œ๋ฐœํ•œ ํ™œ๋™์„ ๋ณด์ด๋Š” ํŽธ์ด๋‹ค. ๊ฒŒ์ž„ ๋งคํฌ๋กœ์™€ ๊ด€๋ จ๋œ ๊ธ€์ด ๋งŽ๋‹ค. ์ด์— ๊ด€๋ จํ•ด์„œ ์šด์˜์ž๊ฐ€ ๊ณต์ง€๋ฅผ ์˜ฌ๋ ธ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์—ฌ์ „ํžˆ ๋Œ€๋ถ€๋ถ„์€ ๊ฒŒ์ž„์—์„œ์˜ ๋งคํฌ๋กœ ์‚ฌ์šฉ๊ณผ ๊ด€๋ จ๋œ ๊ธ€์„ ์˜ฌ๋ฆฐ๋‹ค. ์šด์˜์ž์˜ ์ ‘์†์ด ๋œธํ•œ์ง€ ๋ถ„ํƒ•๋Ÿฌ๋‚˜ ๊ด‘๊ณ ๊ธ€ ์ •๋ฆฌ๋Š” ๋А๋ฆฌ๊ฑฐ๋‚˜ ์•ˆ๋˜๋Š” ํŽธ. ์ž์œ ๋ฐฉ์ž„์ฃผ์˜
[1] ๋งคํฌ๋กœ ๋˜ํ•œ ์ด ์–ธ์–ด์˜ ๊ฐœ๋ฐœ ๋ชฉ์ ์ด๊ธฐ๋„ ํ•˜๋ฏ€๋กœ, ์‰ฝ๊ฒŒ ์ œ์ž‘์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
[์˜ˆ์‹œ1] Gui, add, edit, x10 y10 w100 h20, ์ž…๋ ฅ
[์ถœ์ฒ˜] ์˜คํ† ํ•ซํ‚ค ๊ณต์‹ ์‚ฌ์ดํŠธ https://autohotkey.com
[4] 'AutoHotkey๋ฅผ ์ด์šฉํ•œ ๊ฒฐ๊ณผ๋ฌผ์— GPL์ „์—ผ์ด ๋ฉ๋‹ˆ๊นŒ?'์— ๋Œ€ํ•œ Chris์˜ ๋‹ต๋ณ€ ์›๋ฌธ: No, because the EXE doesn't contain AutoHotkey's source code. Therefore, when you distribute a compiled script, you're not distributing any GPL source, and thus your application isn't subject to the GPL unless you want it to be. In other words, when you build an app with AutoHotkey, there are no restrictions on selling it, nor do you have to release your script's source code. This is because it is similar in principle to having built the app with a GPL C++ compiler.
[5] Byref ์‚ฌ์šฉ
[6] ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ๊ฐ€๋Šฅ
[7] ์‚ฌ์‹ค ์•„๋ž˜์— ๊ณต์‹ ๋ฒˆ์—ญ๋œ ํ•œ๊ตญ์–ด ๋„์›€๋ง์ด ์žˆ๋‹ค.
[8] ์ต์Šคํ”„๋ ˆ์…˜์€ ์‹์„ ์ง‘์–ด๋„ฃ๋Š” ์ˆ˜์‹์ด๊ณ , ๋ฆฌํ„ฐ๋Ÿด์€ ๋ฌธ์ž๋ฅผ ๊ทธ๋Œ€๋กœ ๋Œ€์ž…ํ•˜๋Š” ์ˆ˜์‹์ด๋‹ค.