[AHK]GetKeyStateが取得できない。

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

コメント

PAGE TOP
Ads Block Detector Powered by codehelppro.com
Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

タイトルとURLをコピーしました