오토핫키 강좌 #7 - Run, WinClose, IfWinExist (오토핫키 붙여넣기)




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


오늘은 지난 강좌에 이어서 프로그램 실행과 종료 방법에 대해서 알아보겠습니다.


오토핫키로 작성한 작업이 일정시간동안 실행되지 않을 경우 작업 대상 프로그램을 종료시킨 뒤 다시 실행하는 방법에 대해 알아보고 있으며 매크로의 경우 일정시간동안 이미지를 하나도 찾지 못했을 경우나 팅겼을때 찾을 수 있는 이미지를 찾았을 경우 프로그램을 종료한 뒤 다시 실행시키는 방법이 되겠습니다.


그럼 오늘도 힘차게 시작해봅시다!!


1. Run


Run은 단어 그대로 프로그램을 실행시키는 명령어이고, 실행 방법은 다음과 같습니다.


Run, 실행파일경로


너무 간단하죠?? 블루스택을 실행시킬 경우 Run, C:\Program Files (x86)\BlueStacks\HD-StartLauncher.exe 라고 적어주시면 됩니다. (제 컴퓨터에 설치된 경로이니 다를 수 있으며, 블루스택 아이콘을 우클릭해서 속성을 누르시면 아래 그림과 같이 실행파일의 경로를 알 수 있습니다.)


실행파일 경로


2. WinClose


WinClose 역시 단어에서 무엇을 하는 명령어인지 딱 나오죠?^^ 프로그램을 종료하는 명령어입니다.


사용방법은 아래와 같습니다.


WinClose, 종료할 프로그램명 


이것 역시 너무나 간단합니다. 단! 주의하실점은 프로그램명은 반드시 작업관리자에 표시된 프로그램명과 완벽히 일치해야 한다는 것입니다. 예를 들어 블루스택의 경우 작업관리자에 "BlueStacks App Player"라고 표시되며 아래 그림과 같이 확인할 수 있습니다.



3. IfWinExist and IfWinNotExist


마지막으로 IfWinExistIfWinNotExist입니다. IfWinExist특정 윈도우가 존재하는지를 알려줍니다. 창이 존재한다는 것은 프로그램이 실행되었다는 것과 같은 의미이기 때문에 그냥 프로그램이 실행중인지를 알아온다고 생각하시면 될 것 같습니다. 이와 함께 IfWinNotExist윈도우가 존재하지 않는지를 알려줍니다. 사용방법은 if와 유사하며 자세한 방법은 실습을 통해 알려드리겠습니다.


사용 방법은 아래와 같습니다.


IfWinExist, 프로그램명 


IfWinNotExist, 프로그램명


여기서 프로그램명은 WinClose에서 사용하는 것과 같은 방법으로 적으셔야 합니다.


이렇게 해서 오늘 실습에 필요한 세가지 명령어의 사용방법을 알아봤습니다. 


비교적 사용방법이 쉽기 때문에 잘 따라오실 것이라 믿습니다!^^





4. 적용 실습


지난 강좌 실습을 이어서 하겠습니다.


우선 작성된 스크립트는 아래와 같습니다. 지난시간의 스크립트에서 시간확인() 함수 내부의 내용만 수정하시면 됩니다.



빨간색 박스에 오늘 배운 내용이 들어가 있습니다.


지난 강좌에서 일정시간동안 작업을 하지 않으면 메세지 박스를 띄우도록 했었습니다. 

오늘 강좌에서는 메세지 박스를 대신해서 빨간 박스의 내용을 넣은 것입니다. 



윈도우가 존재하는 경우와 존재하지 않을 경우로 나눠서 작업하도록 IfWinExistIfWinNotExist로 나눠서 윈도우가 존재할 때에는 프로그램을 종료한 뒤 실행시키도록 했으며, 윈도우가 존재하지 않을 경우(얘기치 않게 종료되었을 경우겠죠?)에는 프로그램을 실행만하도록 작성했습니다.

우리가 원하는 것은 특정 프로그램의 재시작이기 때문에 WinClose를 사용해서 윈도우를 종료한 뒤 Sleep으로 조금 기다렸다가 다시 Run을 사용해서 프로그램을 실행시킵니다. 프로그램이 종료되어 있는 경우 실행만 시키면 되기때문에 Run을 사용해 프로그램을 실행시킨뒤 로딩시간정도의 Sleep 시간을 줍니다.


마지막으로 프로그램을 종료하고 실행시키는 동안 시간이 흐르기 때문에 마지막동작시간 갱신을 맨 아래 빨간 박스와 같이수정 했습니다.


두 강좌에 걸쳐서 일정시간동안 매크로(또는 프로그램)가 동작하지 않으면 프로그램을 재시작 하도록 하는 방법을 배워봤습니다.


강좌를 계속 보시는 분들은 느끼실 테지만 명령어의 사용방법은 대부분 유사한 형태를 가지고 있고 Loop(또는 While)과 if만 사용할 수 있으면 많은 것을 할 수 있습니다.


매 강좌때마다 드리는 말씀이지만 프로그래밍은 익숙해 질때까지 반복하는 것이 유일한 방법입니다.


제 강좌를 보시는 모든 분들이 포기하지 않고 원하는 프로그램을 만들 수 있게 되었으면 하는 바램입니다.


이것으로 붙여넣기 7강을 마치겠습니다.

블로그 이미지

킴영감

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

댓글을 달아 주세요

  • 2015.09.20 19:54  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • 킴영감 2015.09.20 21:39 신고  댓글주소  수정/삭제

      우선 CoordMode의 경우 Screen으로 하시는 것을 권장합니다. 픽셀을 찾을 창이 활성화 되어 있지 않아도 찾을 수 있게 하기위해서 입니다.
      다음으로 Pixelsearch의 좌표를 마우스 좌표로 바꿔주시면 될 것 같습니다. 마우스가 있는 좌표의 픽셀값에 따라 마우스 클릭 여부를 결정하면 되기때문에 이외의 부분에서는 픽셀값을 찾을 필요가 없기 때문입니다.

      마지막으로 ErrorLevel의 경우 0이 '참'일때의 값이기 때문에 'errorlevel = 0'으로 수정해주셔야 합니다.

      코드를 수정해보면 다음과 같습니다.
      CoordMode,pixel,screen
      Coordmode,mouse,screen
      Loop
      {
      Getmousepos,vx,vy
      Pixelseach,mx,my,%vx%,%vy,%vx%,%vy,픽셀값
      If(errorlevel=0)
      {
      Click,%vx%,%vy%
      }
      }

  • kwon 2015.11.20 13:40  댓글주소  수정/삭제  댓글쓰기

    그러면 블루스택내에 있는 프로그램도 저명령어로 키고 끌수가 있나요?? 블루스택은 켜진상태라 계속