레이블이 autohotkey인 게시물을 표시합니다. 모든 게시물 표시
레이블이 autohotkey인 게시물을 표시합니다. 모든 게시물 표시

2011년 7월 20일 수요일

Textbox 내용저장

gui,add,edit,w300 h200 vtxt
gui,add,button,gok,ok
gui,show
return

ok:
gui,submit,nohide ;gui 내용을 전송
filename=%A_ScriptDir%\%A_TickCount%.txt
fileappend,%txt%,%filename%

loop
{
IfExist,%filename%
break
}

loop
{
FileRead,temp,%filename%
if txt=%temp%
break
}
return

2011년 7월 1일 금요일

[Autohotkey] GUI 안에 text 값변경하는것

Gui,Add,Edit,w100 vA gDiv,0
Gui,Add,Edit,w100 vB gDiv,0
Gui,Add,Text,w100 vResult
Gui,Show
SetFormat,Float,0.1
return
Div:
Gui,Submit,NoHide
GuiControl,,Result,% A/B
return

[Autohotkey] 서브루틴

Q. 서브루틴이 뭘까?
A. 순서대로 시행될 스크립트와 개별적인 특수적인 스크립트 (핫키에 의해 시행되지않는다)
Example ;
Gui, add, button
gui, show, w100 h100
return
Guiclose:
exitapp
-----------------------
저게 도데체 무어란말인가?
분명 스크립트를 틀면 순서대로 시행될것이고 결국 return에의해 끝날것이다.
시행되지도 않을 exitapp라는 명령어는 무엇이고 왜 guiclose:라는 말을 중간에 써줬을까?
핫키는 ::로 표기한다.
그러므로 저것은 문법에 어긋날것이다.
한번 스크립트를 복사해서 새스크립트를 작성해보자.
잘 실행되는가?
그럼 구이창의 X자를 눌러보자.
스크립트가 꺼졌는가?
바로 이것이다.
guiclose 라는 서브루틴이 마치 패시브스킬처럼 구이를 닫는이벤트를 알아채고 이하 스크립트를 실행시켜주는것이다.
X자를 눌러도 끄고싶지않다면
return이라는 명령어를 exitapp대신에 넣으면될것이다.
대충 감이오는가?
예제를 하나더 살펴보자.
Guiclose:
exitapp
Gui, add, button
gui, show, w100 h100
return
위스크립트를 실행시켜보자.
잘실행됬다면 또한번 X자를 눌러보자. 스크립트가 잘꺼지는가?
잘된다는 몇몇은 실행해보지 않은것일것이다.
사실 위스크립트는 문법상 어긋나지 않고 처음예제와 동일하지만 효과는 상반되게 나타난다.
이는 서브루틴이 이하 스크립트를 감싸지못한다는것을 모른채 가장많이 저지르는 실수이다.
스크립트는 순서대로 시행되고 exitapp를 만남과동시에 사라질것이다.
기억하자.
서브루틴은 처음에 나와선 의도하지않은일을 할수있다.
그렇다면 서브루틴은 언제사용하는것이 효율적일까?
위는 자동적으로 시행해주는 서브루틴의 예이지만
명시적으로 시행해주고싶을떄는
goto, gosub명령어로 해결할수있다.
다음예제를 보자.
Example ;
send, This script is a very Simple script.{enter}
msgbox, im so sad
msgbox, All right
msgbox, That is all right
msgbox, i love you
msgbox, so much ..but...
send, but i can't love you. because my parents hate you...
msgbox, im so sad
msgbox, All right
msgbox, That is all right
msgbox, i love you
msgbox, so much ..but...
send, do you understand? wait.... wait.....
msgbox, im so sad
msgbox, All right
msgbox, That is all right
msgbox, i love you
msgbox, so much ..but...
내용은 보지말자.
구멍영어니까.. 하지만 이것만 봐두자.
스크립트 A B C B D B 가 순차적으로 시행되며
B의 스크립트는 상당히 길고 보기 좋지않다.
이를 어떻게 해결할까?
답이나오는가?
그렇다. b스크립트를 서브루틴으로 묶고 goto 명령어로 순차적으로 시행하면된다.
goto 명령어는 서브루틴으로 이동하는기능을 하니까.
send, This script is a very Simple script.{enter}
goto, B
send, but i can't love you. because my parents hate you...
goto, B
send, do you understand? wait.... wait.....
goto, B
return
B:
msgbox, im so sad
msgbox, All right
msgbox, That is all right
msgbox, i love you
msgbox, so much ..but...
return
스크립트가 한결간결해진거같다.
틀어보자.
순서대로 잘나오는가?
엇!
A스크립트를 시행하고 B스크립트를 시행한뒤 꺼져버린다..
왜??
바로 goto는 서브루틴으로 이동해서 return을 만나면 끝내버리는 명령어기떄문이다..
그럼?남은 gosub로 바꾼다음에 스크립트를 시행해보자.
잘되는가?
gosub가 언제나 무조건 좋은것은아니다.
어떤떄는 goto가 필요하고 어떤때는 gosub가 필요할떄가 있다.
두스크립트를 얼마나 적절하게 이용하느냐가 얼마나 보기좋고 간결하며 이해하기쉬운 코딩이 될지는
여러분판단에 맡길것이다.
이만 서브루틴에 대한 말은.. 접어야할것같다.
그거아는가??
서브루틴뿐아니라 변수에도 한글사용이 가능하다는것
사랑=너뿐
gosub, 하하
return
하하:
msgbox, %사랑%
return
필자는 영어를 사용하는게 더멋잇는 스크립트라고 생각하지만 개개인생각이 다른것이니까,
역시 적당히 떄에맞게 혼용해서 사용하는것도 현명하리라 판단된다.
---------------------------------------------------------------------------------
오타있으면 지적, 내용틀린거 지적좀해주세요오옹.. 하핫

[Autohotkey] GUI 변수설정

a=0 ;a 라는 변수를 0으로 대입해줘요.
gui,add,button,,감사
GUI,show
return
F1:: ;F1을 누를시 a를 1로 바꿔주어요. 여기서 1은 님의설정에따라 달르게할수있죠.
a=1
return
button감사: ;감사라는 버튼을 누를시 a라는 변수를 대입해서 msgbox를 뛰우죠.. 여기서 if 간단한강좌입니다.. 이제 ;중에 찔러주실꺼있으면 말씀해주세요.급해서 가봅니다>^^
if a= 0

msgbox, a는%a%이에요.!!!!! 맞다
else
msgbox a는 %a%이에요.!!!!!. 아니다
return

[Autohotkey] 함수관련

우선 이글을 보기전에 변수의 기초이 대해 아시고, msgbox에 대해아시고, 연산자에 대해 아셔야합니다.
만약 모르신다면, 위의 세가지 내용먼저 익히시길 바랍니다.

함수가 왜 필요할까요?
여러번 반복해서 사용하고 싶은 균일한 명령어들이 필요할때, 간편하게 사용하기 위해서 쓰는것입니다.
반복해서 쓸것도 아닌데, 간편하게 만드는 경우는, 타인에게 함수를 제공할때정도 일것 같습니다
함수가 사실 어려운게 아닌데, 딱히 쉽게 이해될 팁이 없어서 힘들어 하시는분들이 계신듯합니다.
가급적 쉽게 오토핫키의 함수에 대해 적어보겠습니다.
1. 함수의 선언
함수이름(사용될변수1, 사용될변수2, 사용될변수3...)
{
실행될 명령들
return 반환값
}
함수이름 : 사용되어질 함수이름입니다.
사용될변수1,2,3... : 함수안에서 사용되어질 변수입니다.
{} 중괄호 : 꼭 중괄호로 묶여져야만 합니다.
실행될 명령들 : 함수내부에서 실행되어지는 명령들입니다.
반환값 : 함수를 실행하고 값을 반환받고 싶을때 사용되어집니다.
return : 반환하고싶은값이 없다면, return이 필요없습니다.
* 여기서부터 함수에 대해 설명할때 함수선언된 내부와 함수가 선언되지 않는 스크립트부분으로 구분하여 이해를 도왔습니다. (main으로 설명하기엔 애매한감이 있었습니다.)
2. 함수의 호출
우선 예제로 사용될 함수는 아래와 같습니다.
My_Add(a) ………………………… (3)
{
return a+1 …………………………… (4)
}
b=1 …………………………… (1)
b:=My_Add(b) ………………………… (2)
msgbox % b …………………………… (5)
우선 한가지 특성을 알려드리자면, 함수가 선언되면, 그에 해당하는 중괄호의 모든내용은 실제 스크립트에서
함수를 호출하지 않는이상 스크립트내용에 지장을 안줍니다.
그러므로 함수를 어디에 선언해도 무방합니다.
다르게 말하면, 여기서 중괄호는 if나 loop문에서 쓰이는 중괄호와 다소 다른 역할을 합니다. 스크립트내용에 영향을 안주는 영역설정을 하는것입니다.
스크립트내용에 대해 보겠습니다.
(1) b=1로 선언되었죠.
(2) 그리고 My_Add함수를 b를 넣어서 호출합니다. b는 1이므로 1값을 넣은것입니다.
(3) 그러면 이제 함수부분으로 갑니다.
여기가 중요합니다. b=1을 넣었으므로 함수안에선 a=1인 상태가됩니다.
즉 b와 a는 서로 다른곳에 위치한 변수입니다. 전혀 동일한 변수가 아니라는 얘기입니다.
(자세히 얘기하자면, a라는 변수는 함수를 실행할때만 일시적으로 생기는 변수입니다. 지역변수라고도 합니다.)
또 다르게 표현하자면, 스크립트에서 함수안에 a대신 b라고 써도 b=1로 선언한 변수와는 전혀 틀린 지역변수입니다.
다만 이름만 같을수 있을뿐입니다.
(4) return a+1 a에 1을 더한값을 반환한다는 얘기입니다.
(2) 다시 (2)로 돌아왔습니다. b:=My_Add(b)를 보면, My_Add(b)로부터 반환되는값을 b에 저장하겠다는 얘기입니다.
(5) 그러므로 msgbox % b 에서 b는 2가 출력됩니다.
사실 (1),(2),(5)는 좀더 간단히 표현할수 있습니다.
msgbox % My_Add("1")
한마디로 함수 My_Add에 1을 넣어서 반환받은값을 msgbox로 출력한다는 얘기입니다.
그러면 여기서 한가지 팁이 더 생겼죠?
값그자체로 넣을때는 My_Add("1")처럼 ""안에 넣고 변수형태로 넣을때는, My_Add(b)처럼 하면됩니다.
3. 두개이상의 반환값이 필요할때
보시다싶이 return 으론 반환을 하나밖에 못하게 되어있습니다.
return없이 반환을 가능하게 해주는 명령어 두개가 있습니다. global, byref입니다.
a=3
b=3
My_Add()
msgbox % a
msgbox % b

My_Add()
{
global a
a:=a+1
b:=b+1
}
보시다싶이 My_Add엔 아무값도 안넣어서 실행을 했습니다.
그런데 결과값을보면, a=4,b=3이 출력되네요
간단합니다.
함수안에서 global a라은 명령을 실행해주면, 함수안의 a는 일시적으로 사용하는 지역변수가 아닌 스크립트에서 사용되는 a값을 사용할수 있게 해줍니다. 그러므로 함수실행후 a는 4가 되고 b는 3이 되는것입니다.
b에도 영향을 주려면, global b 라고 쓰면 되겠죠 ^^
a=3
b=3
My_Add(a,b)
msgbox % a
msgbox % b

My_Add(Byref a, Byref c)
{
a:=a+1
c:=c+1
}
Byref라고 쓰고 함수에서 변수를 선언해주면, 함수호출시 My_Add(a,b) 대입대는 변수a,b에 간섭을 가능하게 해줍니다.
근데 이상하게 생각되실수 있겠지만, Byref c라고 했음에도 불구하고, 실제 스크립트에서 쓰인 b=3값이 변하여 4가 됩니다.
포인터가 아무래도 적용이 된듯한데, 여기까진 아시면 좋지만, 굳이 알필욘없습니다.
그냥, 간편히 생각하자면, 함수호출시 a,b라고쓰고 함수선언시에는 c,d라고 써도 실제 a,b값에 간섭을 줄수 있다는 것입니다.
------------------------------------------------------------------------------------------------------------------
아마도 여기서부턴 안보셔도 대부분 함수사용시 지장이 없으실듯 합니다.
이 아래 내용은 보실분만 보세요.
4. 함수호출시 값을 안넣어도 함수가 실행되게끔하기
msgbox % My_Add("3")
msgbox % My_Add("3","4")

My_Add(a,b=1)
{
return a+b
}
보시면 함수선언에는 My_Add(a,b=1) a,b 두개가 선언되어있습니다.
하지만 b=1이라고 지정하여, b값을 입력받지 않을시, b는 기본으로 1이 되는것을 의미합니다.
그러므로 msgbox % My_Add("3") 는 4가 나오고, msgbox % My_Add("3","4") 7이 나옵니다.
한가지 주의사항이 있다면, 기본값을 지정할 변수들은 값을 무조건 넣어야 하는 변수보다 뒤쪽에 선언되어야 합니다.
Byref로 선언된 변수는 ""를 사용하는데 굳이 설명하진 않겠습니다. 스크립트만 답니다.
c=2
msgbox % My_Add("3","4")
msgbox % c

My_Add(a,b=1,byref d="")
{
d:=d+1
return a+b
}
5. 함수 호출시만 변하는 static변수
c=10
My_Add(c)
My_Add(c)
My_Add(c)
msgbox % b
My_Add(a)
{
a+=1
static b=0
b+=1
msgbox static b값 : %b%`n지역변수 a값 : %a%
}
static변수란 함수호출시에 함수안에서만 계속 영향을 받는 변수를 말합니다.
함수호출시 처음엔 static b=0 이라고 선언되지만, 그 이후엔 b=0이란 것은 무시되고 static변수로써 취급만 합니다.
그렇다면, 당연히 함수 처음실행시 b값은 1, 다음엔 2, 그다음엔 3으로 출력이 됩니다.
이미 4번까지 읽으셨다면, 자세한 설명이 없어도 이해되시라 생각합니다.
6. 함수의 응용 재귀함수
우선 재귀의 국어사전 뜻을 보면,
재귀

[재ː―][再歸] <명사> 다시 본 곳으로 돌아옴. 재귀-하다 <자동사><여불규칙활용>
함수에서 얘기하자면, 함수내부에서 자신의 함수를 다시 돌아본다. 다시 실행한다 라고 얘기할수 있습니다.
스크립트에서 보겠습니다.
msgbox % My_Add("10") ………………………… (1)
My_Add(a) …………………………………………… (2)
{
if a=1 ………………………………………………… (3)
return "1"
else …………………………………………………… (4)
return a+My_Add(a-1)
}
(1) 우선 함수호출시 10을 넣습니다.
(2) 그럼 함수에서 지역변수 a는 10을 받습니다.
(4) else부분이 실행됩니다. 당연히 a=10이기 때문입니다.
a+My_Add(a-1)
즉 10+ My_Add(9)를 반환한다는 얘기입니다.
근데 My_Add(9)를 실행하면 또 반환을 받을수 있네요.
(2),(4)의 과정을 또 거치면, 10+9+My_Add(8)이 되겠네요.
그래서 a=1 될떄까지 계속 반복하다보면, 10+9+8+7+6+5+4+3+2+My_Add(1) 까지 오는데,
My_Add(1)은 1을 반환하므로 10+9+8+7+6+5+4+3+2+1이 됩니다.
간단히 설명하긴 했으나, Loop와는 다르게 이용할수 있습니다. ^^
* 여기까지 보셨다면, 직접 하나씩 함수를 만들어 보시거나, 사이트에 올라온 함수에 주석을 생각해 보시는건 어떠실까요?
최근에 올라온 MultipleSearch에 대해 보시는건 어떠실까요
제가 MBR님의 멀티플서치를 조금 수정해서 만든글을 보면, 재귀함수에 대해 조금은 보실수 있으실거예요
링크 : http://www.autohotkey.pe.kr/bbs/board.php?bo_table=script&wr_id=483

2011년 6월 23일 목요일

도스 커멘드 생성후 실행

"MS DOS"라고 호칭하는 것이 있습니다. 다들 잘 아실 것입니다.
매우 오래 되었지만, 여전히 사용되고 있으며, 그 다양한 기능 중에는 배치파일이라는 것이 있습니다.
명령 인터프리터로 실행되는 명령어들을 나열한 텍스트 파일입니다.
cmd.exe라는 쉘 프로그램이 배치파일에 있는 명령어를 읽어들여 줄 단위로 실행합니다.
어떤 의미에서는 본 오토핫키와 동일합니다.
오토핫키에서도 배치파일을 작성하고 실행토록 할 수 있습니다.
아래와 같은 연습 스크립트가 있습니다.
아이디어가 돋보이는 간결하고 쉬운 그러면서도 강력한 좋은 내용입니다.
이 스크립트는 다른 사람이 적어놓은 것을 옮기는 것입니다.
이런 아이디어 말고도 그 응용의 범위는 무궁무진할 것입니다.
상세한 내용 설명은 크게 필요 없을 것입니다.
한 번씩 돌려보시기 바랍니다.

그럼..
<--------------------------------------------- AHK 스크립트 내용 --------------------------------------------->
FileAppend,
(
dir c:\windows\System32 /b /s
del "%A_ScriptFullPath%"
del c:\temp.bat
), c:\temp.bat
Sleep, 1000
Run, %ComSpec% /c c:\temp.bat,,hide
ExitApp

 

 

출처 http://www.autohotkey.pe.kr/bbs/board.php?bo_table=script&wr_id=1133&page=2

2010년 10월 2일 토요일

[Autohotkey] GUI 관련

http://www.autohotkey.pe.kr/bbs/board.php?bo_table=tip&wr_id=168&page=2

1단계. 윈도우창 만들기
-------------------------------------
Gui,Show,x100 y100 w200 h200,창만들기
;; x,y는 윈도우창이 생길곳의 좌측상단의 좌표를 말하고
;; w,h는 넓이와 높이를 말합니다.
;; 창만들기라는 타이틀을 가진 창을 생성합니다.
return
;; return은 윈도우창을 만든내용까지만 실행하고 프로그램을 대기상태로 돌린다는 것을 의미합니다.
;; return이 함수에서 쓰인다면 그 의미가 다르지만, 여기선 생략하겠습니다.
-------------------------------------
실행해보셨나요?
윈도우창이 생겼죠?
근데 아무내용이 없습니다.
당현히 저희가 아무것도 안넣었기 때문입니다.
그리고 한가지 문제점 발생되었습니다.
윈도우창 X버튼눌러도 아래쪽에 H아이콘이 남아있을테니깐요.
이건 직접 트레이아이콘쪽에서 우클릭후 종료해주세요.

2. 윈도우창에 닫기버튼 활성화 시키기
-------------------------------------
Gui,Show,x100 y100 w200 h200,창만들기
return
GuiClose:
;;;; Gui창의 Close버튼을 눌렀을때 GuiClose: 아래 내용들을 실행한다는 것을 의미합니다.
exitapp
;;;;프로그램을 종료할다는 것을 의미합니다.
-------------------------------------
어떤가요? 이제 꺼지시죠?
3. 기본적인 기능들 사용해보기
-------------------------------------
Gui,Add,Text,x10 y10,텍스트                                           ;;;;텍스트라고 써지는 Text를 넣습니다.
Gui,Add,Edit,x10 y40 vEdit창반환값,에디트                       ;;;;에디트이라고 써진 Edit창을 넣습니다.
Gui,Add,Button,x10 y70 gButton클릭,버튼                   ;;;;버튼이라고 써진 버튼을 넣습니다.
Gui,Add,CheckBox,x10 y100 gCheckBox클릭 vCheckBox반환값,체크박스          ;;;;;;;;;;;;체크박스라고 써진 체크박스를 넣습니다.
Gui,Show,x100 y100 w300 h300,실행중인 타이틀명           ;;;;;;;;;창을 띄우는데 창의 타이틀이 실행중인 타이틀명 입니다.
return
;;;;여기까지 보면 vEdit창반환값 gButton클릭 gCheckBox클릭 이라고 세개가 있습니다.
;;;;우선 Gui에서 추가되는 대부분의 기능들이 g라벨과 v라벨을 갖습니다.
;;;;g라벨이라하면, 그 추가된 기능부분을 클릭하면, 실행되는 것을 말하고.
;;;;v라벨이라면, 추가된 기능부분이 포함한 정보를 저장할 변수를 말합니다.
Button클릭:    ;;;;gButton클릭 을 지정했으므로 이부분도 반드시 존재하여야합니다.
Gui,Submit,Nohide   
;;;그냥 영어를 해석하시면 편합니다. Gui를 제출한다. 안숨기고.
;;;말그대로 현재 윈도우창의 기능들이 지닌 정보를 지정해둔 v라벨의 변수들에게 제출한다는 이야기 입니다.
msgbox 버튼클릭됨`nEdit창 내용 : %Edit창반환값%
;;; 이제 변수들에 정보가 저장되었으므로 msgbox르 정보를 볼수있겠죠?
return

CheckBox클릭:
Gui,Submit,Nohide
msgbox CheckBox반환값 : %CheckBox반환값%
;;; 체크박스는 반환값으로 0 또는 1을 받습니다.
;;; 0은 체크안되것 1은 체크된것입니다.
return

GuiClose:
exitapp
-------------------------------------
4. Gui창 두개이상 활용하기
-------------------------------------
;;; 간단합니다. 앞에 1: 2:만 써주시면 됩니다.
;;; 우선 기본적으로 1:, 2: 같은것을 안써주면 기본(default)으로 지정되어있는 윈도우창에 기능들이 추가됩니다.
;;; Gui,1:Default가 현재 생략되어있다는 얘기입니다.
;;; 그러므로 Gui,Add,Text,,내용 으로 맨윗줄에쓰면 항상 1번창에 기능들이 추가된것입니다.
;;; Default라는 것으로 현재 관리할 창을 지정할수 있습니다.
Gui,1:Add,Text,x10 y10,1번창
Gui,1:Add,Edit,x10 y40 vEdit1번창창반환값,에디트창1
Gui,1:Add,button,x10 y70 g1번창버튼클릭,버튼1
Gui,2:Add,Text,x10 y10,2번창
Gui,2:Add,Edit,x10 y40 vEdit2번창창반환값,에디트창2
Gui,2:Add,button,x10 y70 g2번창버튼클릭,버튼2
Gui,1:Show,,테스트
return

1번창버튼클릭:
Gui,1:default
;;;; 버튼을 클릭한순간 1번창을 기본으로 지정합니다.
Gui,1:Submit,Nohide
;;;; 버튼을 클릭한순간 1번창의 v라벨의 변수에 정보를 저장합니다.
msgbox 에디트창1 : %Edit1번창창반환값%
Gui,1:hide
;;;; 1번창을 숨깁니다.
Gui,2:Show
;;;; 2번창을 보여줍니다.
return

2번창버튼클릭:
;;;반대이므로 생략합니다.
Gui,2:default
Gui,2:Submit,Nohide
msgbox 에디트창2 : %Edit2번창창반환값%
Gui,2:hide
Gui,1:Show
return

Guiclose:
exitapp
-------------------------------------
생각보다 두개의 창을 관리 하기 쉽죠?
5단계. 창내용 수정하기
GuiControl을 사용하셔야 합니다.
-------------------------------------
Gui,1:Add,Text,x10 y10 w150 v1번창내용,1번창
;;;;1번창의 Text부분을 수정을 위해 v라벨을 주었고, 넓이를 150으로 넓혔습니다.
Gui,1:Add,Edit,x10 y40 vEdit1번창창반환값,에디트창1
Gui,1:Add,button,x10 y70 g1번창버튼클릭,버튼1
Gui,2:Add,Text,x10 y10,2번창
Gui,2:Add,Edit,x10 y40 vEdit2번창창반환값,에디트창2
Gui,2:Add,button,x10 y70 g2번창버튼클릭,버튼2
Gui,1:Show,,테스트
return

1번창버튼클릭:
Gui,1:default
Gui,1:Submit,Nohide
msgbox 에디트창1 : %Edit1번창창반환값%
Gui,1:hide
Gui,2:Show
Gui,2:Default
;;2번창을 Show로 띄웠더라도 수정을 위해선 default로 기본창으로 지정해야합니다.
GuiControl,,Edit2번창창반환값,초기값
;; GuiControl,,edit1,초기값 이렇게 쓰셔도 됩니다.
;; 2번창에서 첫번째(edit1)이란 의미입니다.
;; 편하게 하려면, 그냥 v라벨 쓰는게 편합니다.
return

2번창버튼클릭:
Gui,2:default
Gui,2:Submit,Nohide
msgbox 에디트창2 : %Edit2번창창반환값%
Gui,2:hide
Gui,1:Show
Gui,1:default
GuiControl,text,1번창내용,1번창 첫줄 초기화
;;마찬가지로 1번창을 기본으로 하기 위해 default하였습니다.
;;특이사항으론 text는 v라벨만 주면 수정이 안됩니다. 반드시 앞에 text라고 넣어주어야만 됩니다.
return

GuiClose:
;;; 창이 두개인데 종료버튼이 두개죠..?
;;; 그럼 종료버튼마다 서로다른 기능이 오게할수 있습니다.
msgbox 1번창에서는 종료가 안되게 했습니다.
return

2GuiClose:
;;; 2번창은 2GuiClose라고 사용하시면됩니다.
;;; 현재 스크립트 상으로 2번창에만 exitapp를 넣어서 2번창에서만 종료가됩니다.
msgbox 2번창에서 종료합니다.
exitapp
-------------------------------------
***** 이 외에도 다른 기능들이 많이 있습니다.
-------------------------------------
Text, Edit, UpDown, Picture
Button, Checkbox, Radio
DropDownList, ComboBox
ListBox, ListView, TreeView
Hotkey, DateTime, MonthCal
Slider, Progress
GroupBox, Tab, StatusBar, Internet Explorer Control
-------------------------------------
모두 Add를 통해서 하나씩 해보시면 각각의 특성을 조금씩 아실수 있을것입니다.
P.S ) 옛날에 처음 Gui익힐때가 생각나네요... AHK기존 이용자분들께서 좋다고 이용하라고 하시는데...
        아무리 영어설명서봐도 뭐부터 해야될지 감이 안잡혔었거든요...
        아주기본이라 상세내용은 없지만...조금은 도움이 되시길 바랍니다