본문 바로가기
컴퓨터 인터넷

오토핫키 keywait가 기다리지 않는 문제 해결(KeyWait not waiting)

by 통합메일 2022. 1. 4.
반응형

간단한 코드입니다.

foxitPDF리더에서 스냅샷으로 복사해서 Photoscape에 붙여넣고 다른 이름으로 저장하는 과정에서 파일명 바꿔넣고 enter누르면 곧이어 다음 액션(다시 foxitPDF리더로 돌아가기)을 취하는 코드입니다.

 

그런데 문제는

 

keywait 코드를 넣었음에도 불구하고 기다리지 않고.. sleep, 2000이 지나자마자 msgbox, 허허허와 Winactivate, ahk_class classFoxitReader이 실행되어 버리는 것입니다.(물론 위 짤방에서는 ;를 이용해서 죽여놨습니다.)

 

국내 사이트에서 찾아봤는데

 

AutoHotKey(오토핫키) 설명서 KeyWait

→ AutoHotkey(을)를 유행시키는 페이지 → 레퍼런스 → KeyWait KeyWait 키보드나 마우스, 죠이스틱의 버튼이 밀린다/떼어 놓아질 때까지 대기 KeyWait, KeyName [, Options] Parameters 인수명 설명 KeyName 문..

ahkplant.tistory.com

오토핫키 명령어에 대한 설명을 모아놓은 위 사이트에서는 답을 찾을 수 없었습니다.

 

 

KeyWait not waiting - Ask for Help

KeyWait not waiting - posted in Ask for Help: Hi learned AHK community,Ive got a little script to take a bit of grind and tedium out of a game Im playing. Ive got a KeyWait inside a hotkey definition but what happens is that it never actually waits for the

www.autohotkey.com

그래서 구글에서 영어로 검색을 한 결과(검색어: keywait do not wait) 위와 같은 결과를 확인할 수 있었습니다. 와우 무려 2011년에 작성된 Q&A네요. 10년 전에 일찍이 이러한 고민을 수행한 분들이 계셔서 지금의 제가 빛을 볼 수 있었습니다. 감사합니다. 여러분.

2011년 2월 17일의 답변

그러니까 결론적으로 이유는 모르겠지만..

keywait 명령어를 사용할 때

키가 눌리는 D 옵션 행을 먼저 써주고

그 다음에 그냥 일반 행을 적어줘야 제대로 작동하는 모양입니다.

아 그리고 keywait 명령어를 사용할 때는 {enter} 이런 식으로 적으면 안 되고 그냥 enter라고 적어야 하더군요.

흠흠..

 

그리하여 완성된 코드는 아래와 같습니다.

#IfWinActive, ahk_class classFoxitReader ;foxitPDF스냅샷 -> 포토스케이프 붙여넣기
{
  #c::
  WinActivate, ahk_class #32770
  WinWaitActive, ahk_class #32770
  sleep, 200
  MouseClick, L, 360, 260
  Send, ^{v}
  sleep, 100
  Send, {n}
  sleep, 500
  Send, ^{s}
  Sendinput, {enter}
  sleep, 200
  KeyWait, Enter, D
  KeyWait, Enter
  WinActivate,  ahk_class classFoxitReader
  return
}
반응형

댓글