AutoHotkey_1.1.34.04_setup.exe の場合、下記スクリプトを実行して、Ctrlキーを押しっぱなしにしても、メッセージボックスに出る結果は、「1, 1, 0, 0, 0, 0」という風に、初めの2回しかCtrlキーを押してないことになった。
;test_sleepNG.ahk sleep,3000 tmp:=GetKeyState("Ctrl","P") i:=0 while(i<5){ tmp:=tmp ", " GetKeyState("Ctrl","P") if(GetKeyState("Ctrl","P")){ ;break } sleep,1000 send,{Left} i++ } msgbox,% tmp
下図のようにsleepの位置を変えると「1, 1, 1, 1, 1, 1」となり、うまくいくようになった。
;test_sleepOK.ahk sleep,3000 tmp:=GetKeyState("Ctrl","P") i:=0 while(i<5){ sleep,1000 ;ここに移動 tmp:=tmp ", " GetKeyState("Ctrl","P") if(GetKeyState("Ctrl","P")){ ;break } send,{Left} i++ } msgbox,% tmp
send,{Left}が無くてもうまくいったので、sendとsleepのタイミングによって、キー状態の取得が上手くできないのかもしれない。(バグかな?) これは、AutoHotkey_1.1.36.02_setup.exe にアップデートしても変わらなかったので注意がいりそう。
コメント