카카오토를 만지다가 오핫은 어떤지 싶어서 질문을 드립니다.
카카오토는 서브라는 개념으로 루프를 돌리지만 중간에 단독으로 또다른 서브를 동시다발적으로
돌려주지는 못하는데요
스톱워치나 셋타임함수 등으로 얼추 비슷하게 개별실시간 서브 비스므리 작동은 가능하지만요
오핫은 기본적으로 흐름이 어떻게 되는지 궁금합니다.
스크립 흐름대로 절차에 따라 1 2 3 4 5 식으로 카카오토처럼 한방향 흐름의 루프인지..
그렇다면 새로운 루프는 (예를 들어 메인루프는 판단하라고 지정해놓은 영역의 이미지서치의 흐름일때
동시에 스킬( 마우스나 키보드동작) 을 또다른 루프로 무한루프로 돌려줄수있는지.
영어로 표현하자면 simultaneous 하게 동시다발적인 서브루프를 돌려줄수 있는지 궁금합니다.
일정 시각에 판단하라고 한 판단문에 따라 이미지 서치를 하면서 동시에 몇초마다 마우스를 누르라는 명령을
한타임에 같이 수행해 줄수가 있는지 궁금합니다
그림으로 표현하자면...
그림이 참 ㅋㅋ
여하튼 오핫의 이미지서치를 이용한 매크로시 전체 플로우차트의 흐름이 위에 질문드리는것처럼
우측의 흐름이 가능한지 질문드립니다
최대한 쉽게 설명드려볼게요
오토핫키는 기본적으로 하나의 쓰레드 실행만 지원하며, 윗줄부터 아랫줄로 한줄씩 순차실행합니다
하나의 쓰레드가 실행 중일때 다른 쓰레드가 끼어들면 본래의 쓰레드는 일시정지되고 끼어든 쓰레드를 처리한 후 본래 쓰레드를 재개 합니다.
쓰레드의 실행은 핫키나 버튼 등으로 하는것이라고 보면 됩니다.
그러면 이를테면 "동작" 버튼 하나만 눌러놓으면 주구장창 돌아가는 매크로의 경우 하나의 쓰레드만 계속 돌아가는거라 보심되겠지요.
그 상태에서 "설정저장" 버튼을 누르면 "동작" 버튼으로 실행했던 쓰레드를 일시정지하고, "설정저장" 버튼으로 실행하는 코드 일련을 모두 실행한 후 일시정지했던 기존의 쓰레드로 복귀하여 계속 실행합니다.
그리고 스크립트의 윗줄에서 아랫줄로 순차적으로 실행하오다가 goto나 gosub을 만나는 순간 스크립트의 다른 지점으로 점프하는데, 점프할 지점을 정의하기 위해 라벨이란걸 사용합니다.
goto의 경우 해당 라벨로 점프해서 위에서 아래로 코드를 실행하고요
gosub의 경우 라벨을 일종의 루틴으로 이용하는데, 해당 라벨의 코드를 순차적으로 실행하고 Return을 만나면 다시 원래의 위치로 돌아가는것입니다.
또한 함수라는것도 있는데 이 역시 루틴의 일종입니다. 라벨과 다른점은, 함수는 입력값과 반환값이 있다는것이고
함수 안에서는 본스크립트와 변수를 공유하지 않는다는것입니다.
함수로 작성된 스크립트는 실행되지 않으며, gosub으로 특정 라벨로 점프하듯이 본 스크립트 도중에 함수명으로 호출하여 사용합니다. 함수가 호출되면 해당 함수 스크립트 수행 후 다시 본 스크립트로 돌아가는 것입니다.
또한 복잡한 자료들을 쉽게 처리하기 위해 변수와 함수를 하나의 집합으로 만들어 특정 기능만을 수행할 수 있도록 작성하기도 하는데 이것을 클래스라고 합니다.
일반적으로 오토핫키로 매크로 제작을 위해서는 굳이 클래스로 코드를 작성하실 필요까지는 없습니다만 함수와 라벨은 적절하게 잘 이용하시는게 좋습니다.