오토핫키 강좌 #6 - FormatTime (오토핫키 붙여넣기)




안녕하세요~ 킴영감입니다~


요즘 바쁜일이 있어서 강좌를 자주 올리지 못하네요...


기다리시는 분들께 죄송하다는 말씀 먼저 드립니다.ㅠ


오늘 오랜만에 제 강좌를 보시는 분께서 질문해 주신 내용으로 강좌를 진행하려고 합니다.


매크로를 만들어서 돌리다보면 게임이 종료되거나 검은화면으로 되는 등 원하지 않는 현상들이 발생합니다.


이럴 경우 게임을 다시 실행하거나 프로그램을 다시 실행하는 기능이 절실하게 느껴지실 것입니다.


위와 같이 고민하고 계시는 분들을 위해서 일정 시간동안 아무 작업을 하지 않을 경우 프로그램을 종료한 뒤 다시 실행하는 기능을 붙여넣어서 사용하실 수 있도록 함수로 구현해 드리겠습니다.  (두 강좌에 나눠서 진행하겠습니다.)


그럼 간만의 강좌를 힘차게 시작해 보겠습니다.



1. FormatTime


FormatTime은 컴퓨터의 시간을 받아오는 명령어 입니다.


원하는 형식으로 시간을 받아올 수 있으며 사용방법은 아래와 같습니다.


 FormatTime, 시간을 저장할 변수, 받아올 정보, 정보를 표시할 포멧


시간을 저장할 변수 - 원하는 변수 이름을 적으시면 됩니다.


받아올 정보 - 날짜, 시간 중 받아오고 싶은 것을 정하는 부분입니다. 년, 월, 일, 시, 분, 초를 모두 사용할 수 있으며 각각에 해당하는 양식을 적어주시면 됩니다. (년: YYYY, 월: M, 일: D, 시: H24 또는 H12, 분: m, 초: s) 예를 들어 분과 초만 받아오고 싶을 경우 다음과 같이 스크립트를 작성하시면 됩니다. (예시: FormatTime, 변수, m s, m s).


정보를 표시할 포멧 - 말 그대로 정보를 표시할 포멧입니다. 오토핫키에서는 변수의 자료형을 따로 정의하지 않기 때문에 표시할 형태만 설정해 주면 됩니다. 예를 들어 분과 초를 표시할 때 "3분40초"라는 형태로 표시하고 싶으시면 "FormatTime, 변수, ms, m분s초" 라고 작성하시면 됩니다.


2. FormatTime을 활용한 시간확인 함수


특정 동작을 하지 않는 시간이 5초 이상이 되면 메세지 박스를 띄우는 프로그램을 생각해 봅시다.


프로그램이 시작되면 루프를 돌고 위에서부터 한줄씩 내려가면서 코드를 수행하게 됩니다. 그럼 루프 내부에 제일 아래쪽에 시간을 확인하는 코드를 추가하면 되겠죠??


여기에 추가로 "동작을 하지 않은 시간을 저장하는 변수"와 "마지막 동작을 한 시간"을 저장하는 변수, "현재시간"을 저장하는 변수가 필요합니다.


밑그림을 그렸으니 코드를 작성해 보도록 하겠습니다. 


아래와 같이 스크립트를 작성하세요.



이번 강좌에서는 간편하게 핫키로 동작하도록 스크립트를 작성했습니다.


F2 키를 누르면 프로그램이 시작하고 F3 키를 누르면 프로그램이 종료됩니다.



"현재시간", "마지막동작시간", "동작을하지않은시간" 이라는 변수를 선언하고 0으로 초기화합니다. 루프로 들어가기 직전에 "마지막 동작시간"을 갱신해주고 작업을 시작합니다.


작업이미지를 찾았을 경우에 마지막동작시간을 갱신함으로써 작업이 멈춘 시점부터의 시간을 계산할 수 있습니다.


루프 내부의 마지막줄에 시간을 확인하는 함수를 호출하도록 "시간확인()"을 추가했습니다.


마지막으로 시간확인함수를 아래에 구현 했습니다.

"시간확인"함수를 호출하게되면 현재시간을 받아와서 마지막동작시간과의 차이를 계산합니다. 시간은 지날수록 값이 커지기 때문에 현재시간에서 마지막동작시간을 빼줬습니다. 이렇게 동작을하지않은시간을 계산하고 if를 이용해서 그 시간이 일정시간 이상이될 경우 원하는 동작을 하도록 작성되었습니다.


저는 테스트 시간관계상 5초로 했지만 실제 적용할 때에는 "분"단위로 계산될 것이라 생각합니다. 이 때는 "FormatTime, 분, m, m"처럼 "분" 단위로 적용하시면 되며 아래와 같이 스크립트를 작성하시면 됩니다.



시간을 확인하는 부분에서 빨간 박스의 내용처럼 바뀐 이유는 60분이 넘어갈 경우를 생각해줬기 때문입니다. "초" 단위를 사용할 때에도 위와같이 60초가 넘어가는 것을 체크해주는 것이 좋겠죠?^^



이렇게 해서 특정 시간동안 아무일도 하지 않을 경우를 확인하는 함수를 만들어 봤습니다.


오랜만에 쓰는 강좌라 정리가 덜된 느낌이네요... 하지만 어려운 내용이 아니니 그동안 제 강좌를 보시면서 꾸준히 연습하신 분들이라면 충분히  쉽게 적용하실 수 있을 것입니다.


이해가 안되는 부분 있으시면 언제든지 댓글로 질문 주시면 됩니다.^^


그럼 오늘 강좌를 마치도록 하겠습니다.

블로그 이미지

킴영감

프로그래밍과 게임공략, 게임과 관련된 프로그램에 대한 내용을 다룹니다.

,