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 にアップデートしても変わらなかったので注意がいりそう。


コメント