CMD에서 수행되는 프로그램(batch 제외)이라면 오토핫키가 인터럽트를 가져올 수 없으니 기본적으로 async로 동작하게 할 수밖에 없습니다.
즉, 오토핫키가 프로그램의 메시지를 가져오는 것이 아니라 프로그램이 메시지를 출력하면(프로그램은 오토핫키가 메시지를 읽는다는 것을 고려하지 않음) 오토핫키가 주기적으로 메시지를 읽어오는 것입니다.
방법은 두가지가 있겠습니다.
1) 화면의 텍스트 비교
- 구현 : 오토핫키가 화면의 메시지를 텍스트로 인식하지 못하므로 이미지 비교를 함
(http://www.autohotkey.com/docs/commands/ImageSearch.htm)
- 단점 : 화면의 각 텍스트 문자를 캡쳐하여 그림으로 변환하는 작업이 번거로움.
Console 화면이 항상 최상위에서 실행되어야 함.
화면에 출력되는 메시지가 많을 경우 오토핫키의 실행 주기보다 짧은 시간에 화면이 스크롤됨으로써
오토핫키가 인식하지 못할 수도 있음.
2) 파일 텍스트 비교
- 구현 : 화면의 메시지를 파일로 저장하고 저장된 파일의 텍스트를 오토핫키가 읽어옴
(http://www.autohotkey.net/~Lexikos/AutoHotkey_L/docs/commands/FileEncoding.htm)
- 단점 : 프로그램 자체에서 로그 파일 기록을 지원하지 않을 경우 redirect를 사용하여야 하는데
2개 device 동시 출력은 O/S2와 NT만 지원됨. XP는 안됨.
XP에서 redirect를 파일로 지정할 경우 화면에 메시지 출력 안됨.
아..이건 테스트도 안해봤음.
3) 파일 텍스트 비교 : batch 작성
- 구현 : 화면의 메시지를 파일로 저장하고 저장된 파일의 텍스트를 읽어서 판단하는 batch 프로그램 작성.
배치 프로그램은 윈도우 스케쥴에 등록. 또는 배치 프로그램 실행을 담당하는 오토핫키 작성.
(http://www.computerhope.com/batch.htm#dos)
(http://rumyism.tistory.com/375)
- 단점 : 2)번 방법과 동일
- 위 2번보다 뭔가 장점이 있을 것같아 적었는데 적다보니 별 장점이 없는 듯..
여기까지가 저의 한계인 듯...
CreatePipe를 이용한 예제가 개인적으론 가장 좋아보이는데, 이건 API 를 잘 모르면 사용할 수 없고 어떤 식으로든 redirect를 이용하기 위해서 프로그램을 직접 호출할 수 있어야 스크립트가 동작하도록 할 수 있다는 것도 상황에 따라 문제가 될것 같습니다.