[3] 오토핫키 Autohotkey 완벽분해 강좌 - 쓰레드 종료문

Posted by 아이티프로13
2018. 5. 5. 16:50 프로그래밍/AutohotKey

안녕하세요. 쿠과자입니다

이전시간에는 간단한 핫키와 메시지박스에 대해서 알아봤는데요

2018/05/01 - [프로그래밍/AutohotKey] - [2] 오토핫키 Autohotkey 완벽분해 강좌 - 핫키 및 메시지박스

원래 이번시간에는 키보드제어, 즉 send 에 대해서 알아볼려했지만

이번시간에는 Return 문이나 Exitapp 문등 "쓰레드 종료"를 하는 구문에 대해서 알아보도록 하겠습니다


쓰레드란?


그 전에 쓰레드가 뭔지에 대해서 알아봅시다.


F5::

msgbox,F5 Pressed

Return


위와같이 된것이 하나의 쓰레드(Thread)입니다.

즉, 오토핫키 스크립트가 실행되는 하나의 흐름? 이라고 생각하시면 됩니다.

일반적으로, 저렇게 라벨(F5:: 처럼 핫키나, 이후 추가될 라벨등이 있습니다.) 로 시작해서

return(또는 exit 등.)문에 의해서 쓰레드 종료가 됩니다.

이 Return, 이 구문이 바로 "쓰레드 종료문"에 해당하게 되는 겁니다.


결국 오토핫키는 쓰레드와 함수(이후 서술)의 집합이라고 생각하시면 됩니다.


만약 쓰레드 종료문이 없으면 어떻게 될까요?


F5::

msgbox,F5 Pressed


F6::

msgbox,F6 Pressed


이렇게 한 상태에서 실행을 해보시면, F6을 누르면 메시지박스 하나만 띄워지지만

F5를 누르면 메시지박스 두개가 연달아 띄워지는 경우가 발생합니다.

즉, 쓰레드가 종료가 안되고 바로 다음 쓰레드가 실행이 된 경우죠.


그렇기 때문에 우리가 원하는 결과를 얻기 위해서는 쓰레드 종료문을 꼭 알아야 합니다.


그럼, 이제부터 쓰레드 종료문에 대해서 알아보도록 합시다.




가장 기본 종료문, Return


이전 강의에서도 썻던, 가장 기본적인 Return 문입니다.

Return 문은, 세가지 역할을 합니다.

1. 그 이전 쓰레드로 돌아가는 역할을 합니다.

2. 그 이전 쓰레드에 아무것도 없으면 바로 쓰레드를 종료시킵니다.

3. 함수의 경우 변수


아직은 쓰레드 종료 기능밖에 쓰이지 않겠지만,

나중에 Gosub 문이나 함수문에서 매우 중요하게 쓰일 종료문입니다.

어떻게 쓰이는지는, 그때 알아보고 지금은 두번째 기능에 주목하도록 합시다.


F5::

msgbox,F5 Pressed

Return


F6::

msgbox,F6 Pressed

Return


위의 예문을 실행해보시면 아까와는 다르게 각각 따로 키가 동작하는것을 알 수가 있습니다.



Exitapp과 Reload 구문


다음으로 Exitapp 구문과 Reload 구문입니다.

Exitapp은 그 쓰레드를 종료함과 동시에 오토핫키를 바로 꺼버리는 역활을 합니다.

그렇기 때문에, Exitapp을 이용하면 다른걸 다 제하고 바로 꺼버리게 되죠.


Reload 구문은 그 쓰레드를 종료함과 동시에 오토핫키를 재시작하는 역활을 합니다.


F5::

msgbox,F5 Pressed

Exitapp

msgbox,This was not Displayed

Return


F6::

msgbox,F6 Pressed

Reload

msgbox,This was not Displayed

Return


위의 구문에서, F5를 누르면 F5 Pressed만 표시가 되고 Exitapp이 되기때문에,

프로그램이 종료되서 아래의 메시지박스가 실행이 안되고


F6을 누르면 F6 Pressed만 표시가 되고 Reload가 되기 때문에

프로그램이 재시작되면서 아래의 메시지박스가 실행이 되지 않습니다.


*참고!

F7::

reload

이런식으로 바로 Reload를 처리하게 되면,

F7을 연타할경우, Reload가 계속 처리가 되서

프로그램이 여러번 실행이 되는 경우가 있습니다.

어떻게 보면 오토핫키 고유의 오류라고 볼 수 있습니다.




Exit 구문


Exit 구문은 오토핫키를 접하는 분들도 처음 들어보는 분들이 많을겁니다.

Exit 구문은 이름 그대로, 그 쓰레드가 무슨 일이 있든 바로 종료하는 역활을 합니다.

Return 문에서는 이전 쓰레드로 돌아가는 역활을 해서 Gosub 문에서 돌아가는 역활을 하지만,

Gosub 안에서 이 구문을 쓰면 이전 쓰레드로 돌아가지 않고 바로 종료하는 역활을 합니다.


이 구문은 Gosub 문을 배울때 알아보도록 합시다.





지금까지 오토핫키에서 쓰레드를 종료하는 문장에 대해서 알아봤습니다.

다음 시간에는 정말로! 키보드 제어, 즉 Send에 대해서 정확히 알아보도록 합시다.



공감 버튼을 눌러주시면

블로거에게 힘이 됩니다!